}
/// Constructor
-IPAddr::IPAddr(int ip)
+IPAddr::IPAddr(uint32_t ip)
{
atoms[0] = ip >> 24;
atoms[1] = ip >> 16;
atoms[3] = ip;
}
+#if 0
/// Constructor
IPAddr::IPAddr(const char* ip) throw (std::logic_error)
{
atoms[i] = std::atoi(ips.c_str());
}
}
+#endif
/// Constructor
-//IPAddr::IPAddr(const std::string& ip) throw (std::logic_error)
-//{
-// IPAddr(ip.c_str());
-//}
+IPAddr::IPAddr(const std::string& 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());
+ }
+}
/// 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];
}