#ifndef _SOCKET_INTERNETADDRESS_HPP_ #define _SOCKET_INTERNETADDRESS_HPP_ #ifndef _COMMON_STRING_HPP_ #include #endif #ifndef _COMMON_WINSOCK_HPP_ #include #endif class InternetAddress : private in_addr { public: InternetAddress(void); InternetAddress(BYTE a1,BYTE a2,BYTE a3,BYTE a4); InternetAddress(const InternetAddress &someInternetAddress); InternetAddress(const in_addr &someInAddr); InternetAddress(const String &dottedString); InternetAddress(unsigned value); virtual ~InternetAddress(); InternetAddress &operator=(const InternetAddress &someInternetAddress); InternetAddress &operator=(const in_addr &someInAddr); WORD operator==(const InternetAddress &someInternetAddress)const; operator String(void); operator in_addr&(void); String toString(void)const; WORD isZero(void)const; void l1(unsigned value); unsigned l1(void)const; BYTE b1(void)const; void b1(BYTE b1); BYTE b2(void)const; void b2(BYTE b2); BYTE b3(void)const; void b3(BYTE b3); BYTE b4(void)const; void b4(BYTE b4); private: void setZero(void); }; inline InternetAddress::InternetAddress(void) { setZero(); } inline InternetAddress::InternetAddress(const InternetAddress &someInternetAddress) { *this=someInternetAddress; } inline InternetAddress::InternetAddress(const in_addr &someInAddr) { *this=someInAddr; } inline InternetAddress::InternetAddress(unsigned value) { l1(value); } inline InternetAddress::InternetAddress(BYTE a1,BYTE a2,BYTE a3,BYTE a4) { b1(a1); b2(a2); b3(a3); b4(a4); } inline InternetAddress::InternetAddress(const String &dottedString) { DWORD internetAddress; b1(0); b2(0); b3(0); b4(0); if(INADDR_NONE==(internetAddress=inet_addr((LPSTR)dottedString)))return; *this=(in_addr&)internetAddress; } inline InternetAddress::~InternetAddress() { } inline InternetAddress &InternetAddress::operator=(const InternetAddress &someInternetAddress) { b1(someInternetAddress.b1()); b2(someInternetAddress.b2()); b3(someInternetAddress.b3()); b4(someInternetAddress.b4()); return *this; } inline InternetAddress &InternetAddress::operator=(const in_addr &someInAddr) { b1(someInAddr.S_un.S_un_b.s_b1); b2(someInAddr.S_un.S_un_b.s_b2); b3(someInAddr.S_un.S_un_b.s_b3); b4(someInAddr.S_un.S_un_b.s_b4); return *this; } inline WORD InternetAddress::operator==(const InternetAddress &someInternetAddress)const { return (b1()==someInternetAddress.b1()&& b2()==someInternetAddress.b2()&& b3()==someInternetAddress.b3()&& b4()==someInternetAddress.b4()); } inline InternetAddress::operator String(void) { return toString(); } inline String InternetAddress::toString(void)const { return inet_ntoa((in_addr&)*this); } inline InternetAddress::operator in_addr&(void) { return *this; } inline unsigned InternetAddress::l1(void)const { return in_addr::S_un.S_addr; } inline void InternetAddress::l1(unsigned value) { in_addr::S_un.S_addr=value; } inline BYTE InternetAddress::b1(void)const { return in_addr::S_un.S_un_b.s_b1; } inline void InternetAddress::b1(BYTE b1) { in_addr::S_un.S_un_b.s_b1=b1; } inline BYTE InternetAddress::b2(void)const { return in_addr::S_un.S_un_b.s_b2; } inline void InternetAddress::b2(BYTE b2) { in_addr::S_un.S_un_b.s_b2=b2; } inline BYTE InternetAddress::b3(void)const { return in_addr::S_un.S_un_b.s_b3; } inline void InternetAddress::b3(BYTE b3) { in_addr::S_un.S_un_b.s_b3=b3; } inline BYTE InternetAddress::b4(void)const { return in_addr::S_un.S_un_b.s_b4; } inline void InternetAddress::b4(BYTE b4) { in_addr::S_un.S_un_b.s_b4=b4; } inline WORD InternetAddress::isZero(void)const { return (!b1()&&!b2()&&!b3()&&!b4()); } inline void InternetAddress::setZero(void) { b1(0); b2(0); b3(0); b4(0); } #endif