85 lines
1.6 KiB
C++
85 lines
1.6 KiB
C++
#ifndef _SOCKET_SOCKETADDRESS_HPP_
|
|
#define _SOCKET_SOCKETADDRESS_HPP_
|
|
#ifndef _COMMON_WINSOCK_HPP_
|
|
#include <common/winsock.hpp>
|
|
#endif
|
|
#ifndef _SOCKET_INTERNETADDRESS_HPP_
|
|
#include <socket/inaddr.hpp>
|
|
#endif
|
|
|
|
class SocketAddress : private sockaddr_in
|
|
{
|
|
public:
|
|
SocketAddress();
|
|
virtual ~SocketAddress();
|
|
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);
|
|
private:
|
|
void setZero(void);
|
|
};
|
|
|
|
inline
|
|
SocketAddress::SocketAddress()
|
|
{
|
|
setZero();
|
|
}
|
|
|
|
inline
|
|
SocketAddress::~SocketAddress()
|
|
{
|
|
}
|
|
|
|
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 ntohs(sockaddr_in::sin_port);
|
|
}
|
|
|
|
inline
|
|
void SocketAddress::port(unsigned short port)
|
|
{
|
|
sockaddr_in::sin_port=htons(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());
|
|
}
|
|
#endif
|
|
|
|
|