215 lines
3.7 KiB
C++
215 lines
3.7 KiB
C++
#ifndef _SOCKET_INTERNETADDRESS_HPP_
|
|
#define _SOCKET_INTERNETADDRESS_HPP_
|
|
#ifndef _COMMON_STRING_HPP_
|
|
#include <common/string.hpp>
|
|
#endif
|
|
#ifndef _COMMON_WINSOCK_HPP_
|
|
#include <common/winsock.hpp>
|
|
#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
|
|
|