Files
Work/proto/source/sockaddr.hpp
2024-08-07 09:16:27 -04:00

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