Initial
This commit is contained in:
105
socket/sockaddr.hpp
Normal file
105
socket/sockaddr.hpp
Normal file
@@ -0,0 +1,105 @@
|
||||
#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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user