106 lines
1.9 KiB
C++
106 lines
1.9 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();
|
|
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
|
|
|
|
|