#ifndef _SOCKET_SOCKETADDRESS_HPP_ #define _SOCKET_SOCKETADDRESS_HPP_ #ifndef _COMMON_WINSOCK_HPP_ #include #endif #ifndef _SOCKET_INTERNETADDRESS_HPP_ #include #endif class SocketAddress : private sockaddr_in { public: SocketAddress(); virtual ~SocketAddress(); operator sockaddr_in&(void); short family(void)const; void family(short family); unsigned short port(void)const; void port(unsigned short port); InternetAddress internetAddress(void)const; void internetAddress(const InternetAddress &internetAddress); static int length(void); String toString(void)const; private: void setZero(void); }; inline SocketAddress::SocketAddress() { setZero(); } inline SocketAddress::~SocketAddress() { } inline SocketAddress::operator sockaddr_in&(void) { return *this; } inline short SocketAddress::family(void)const { return sockaddr_in::sin_family; } inline void SocketAddress::family(short family) { sockaddr_in::sin_family=family; } inline unsigned short SocketAddress::port(void)const { return sockaddr_in::sin_port; } inline void SocketAddress::port(unsigned short port) { sockaddr_in::sin_port=port; } inline InternetAddress SocketAddress::internetAddress(void)const { return InternetAddress(sockaddr_in::sin_addr); } inline void SocketAddress::internetAddress(const InternetAddress &internetAddress) { sockaddr_in::sin_addr.S_un.S_un_b.s_b1=internetAddress.b1(); sockaddr_in::sin_addr.S_un.S_un_b.s_b2=internetAddress.b2(); sockaddr_in::sin_addr.S_un.S_un_b.s_b3=internetAddress.b3(); sockaddr_in::sin_addr.S_un.S_un_b.s_b4=internetAddress.b4(); } inline void SocketAddress::setZero(void) { family(0); port(0); internetAddress(InternetAddress()); } inline String SocketAddress::toString(void)const { return internetAddress().toString()+String(":")+String().fromInt(port()); } inline int SocketAddress::length(void) { return sizeof(sockaddr_in); } #endif