]> git.llucax.com Git - z.facultad/75.74/practicos.git/blobdiff - practicas/pipi/src/ipaddr.cpp
Queda lo mínimo del DNS implementado. Una prueba simple en una red sin routers
[z.facultad/75.74/practicos.git] / practicas / pipi / src / ipaddr.cpp
index 5f33669fb823d6f0dfc8d8988c839968cfd17893..5d9bfdf4633ffb6fc3c10d5e42a33afe625443af 100644 (file)
@@ -2,6 +2,15 @@
 #include "ipaddr.h"
 #include <sstream>
 
 #include "ipaddr.h"
 #include <sstream>
 
+/// Constructor
+IPAddr::IPAddr()
+{
+    atoms[0] = 0;
+    atoms[1] = 0;
+    atoms[2] = 0;
+    atoms[3] = 0;
+}
+
 /// Constructor
 IPAddr::IPAddr(atom a1, atom a2, atom a3, atom a4)
 {
 /// Constructor
 IPAddr::IPAddr(atom a1, atom a2, atom a3, atom a4)
 {
@@ -12,7 +21,7 @@ IPAddr::IPAddr(atom a1, atom a2, atom a3, atom a4)
 }
 
 /// Constructor
 }
 
 /// Constructor
-IPAddr::IPAddr(unsigned ip)
+IPAddr::IPAddr(uint32_t ip)
 {
     atoms[0] = ip >> 24;
     atoms[1] = ip >> 16;
 {
     atoms[0] = ip >> 24;
     atoms[1] = ip >> 16;
@@ -20,20 +29,36 @@ IPAddr::IPAddr(unsigned ip)
     atoms[3] = ip;
 }
 
     atoms[3] = ip;
 }
 
+#if 0
+/// Constructor
+IPAddr::IPAddr(const char* ip) throw (std::logic_error)
+{
+    std::istringstream iss(ip);
+    std::string ips;
+    for (int i = 0; i < 4; ++i)
+    {
+        if (!std::getline(iss, ips, '.'))
+            throw std::logic_error("Dirección IP inválida");
+        atoms[i] = std::atoi(ips.c_str());
+    }
+}
+#endif
+
 /// Constructor
 /// Constructor
-IPAddr::IPAddr(std::string ip) throw (std::logic_error)
+IPAddr::IPAddr(const std::string& ip) throw (std::logic_error)
 {
     std::istringstream iss(ip);
 {
     std::istringstream iss(ip);
+    std::string ips;
     for (int i = 0; i < 4; ++i)
     {
     for (int i = 0; i < 4; ++i)
     {
-        if (!std::getline(iss, ip, '.'))
+        if (!std::getline(iss, ips, '.'))
             throw std::logic_error("Dirección IP inválida");
             throw std::logic_error("Dirección IP inválida");
-        atoms[i] = std::atoi(ip.c_str());
+        atoms[i] = std::atoi(ips.c_str());
     }
 }
 
 /// Operador de casteo a unsigned
     }
 }
 
 /// Operador de casteo a unsigned
-IPAddr::operator unsigned () const
+IPAddr::operator uint32_t () const
 {
     return (atoms[0] << 24) + (atoms[1] << 16) + (atoms[2] << 8) + atoms[3];
 }
 {
     return (atoms[0] << 24) + (atoms[1] << 16) + (atoms[2] << 8) + atoms[3];
 }