Files
Work/socket/INTSADDR.HPP
2024-08-07 09:16:27 -04:00

153 lines
3.2 KiB
C++

#ifndef _SOCKET_INETSOCKETADDRESS_HPP_
#define _SOCKET_INETSOCKETADDRESS_HPP_
#ifndef _COMMON_WINSOCK_HPP_
#include <common/winsock.hpp>
#endif
#ifndef _COMMON_STRING_HPP_
#include <common/string.hpp>
#endif
#ifndef _SOCKET_INTERNETADDRESS_HPP_
#include <socket/inaddr.hpp>
#endif
class INETSocketAddress : private sockaddr_in
{
public:
INETSocketAddress(void);
INETSocketAddress(const INETSocketAddress &someINETSocketAddress);
virtual ~INETSocketAddress();
INETSocketAddress &operator=(const INETSocketAddress &someINETSocketAddress);
WORD operator==(const INETSocketAddress &someINETSocketAddress);
operator sockaddr_in&(void);
short family(void)const;
void family(short family);
short port(void)const;
void port(short port);
InternetAddress internetAddress(void)const;
void internetAddress(const InternetAddress &someInternetAddress);
sockaddr_in &getsockaddr(void);
String toString(void)const;
static int length(void);
private:
short purePort(void)const;
void purePort(short purePort);
void setZero(void);
};
inline
INETSocketAddress::INETSocketAddress(void)
{
setZero();
}
inline
INETSocketAddress::INETSocketAddress(const INETSocketAddress &someINETSocketAddress)
{
*this=someINETSocketAddress;
}
inline
INETSocketAddress::~INETSocketAddress()
{
}
inline
INETSocketAddress &INETSocketAddress::operator=(const INETSocketAddress &someINETSocketAddress)
{
family(someINETSocketAddress.family());
purePort(someINETSocketAddress.purePort());
internetAddress(someINETSocketAddress.internetAddress());
return *this;
}
inline
WORD INETSocketAddress::operator==(const INETSocketAddress &someINETSocketAddress)
{
return (family()==someINETSocketAddress.family()&&
purePort()==someINETSocketAddress.purePort()&&
internetAddress()==someINETSocketAddress.internetAddress());
}
inline
INETSocketAddress::operator sockaddr_in&(void)
{
return *this;
}
inline
short INETSocketAddress::family(void)const
{
return sockaddr_in::sin_family;
}
inline
void INETSocketAddress::family(short family)
{
sockaddr_in::sin_family=family;
}
inline
short INETSocketAddress::port(void)const
{
return ntohs(sockaddr_in::sin_port);
}
inline
void INETSocketAddress::port(short port)
{
sockaddr_in::sin_port=htons(port);
}
inline
short INETSocketAddress::purePort(void)const
{
return sockaddr_in::sin_port;
}
inline
void INETSocketAddress::purePort(short purePort)
{
sockaddr_in::sin_port=purePort;
}
inline
InternetAddress INETSocketAddress::internetAddress(void)const
{
return InternetAddress(sockaddr_in::sin_addr);
}
inline
void INETSocketAddress::internetAddress(const InternetAddress &someInternetAddress)
{
::memcpy((char*)&(((sockaddr_in&)*this).sin_addr),(char*)&((in_addr&)someInternetAddress),sizeof(in_addr));
}
inline
sockaddr_in &INETSocketAddress::getsockaddr(void)
{
return *this;
}
inline
void INETSocketAddress::setZero(void)
{
::memset((char*)&((sockaddr_in&)*this),0,sizeof(sockaddr_in));
}
inline
String INETSocketAddress::toString(void)const
{
String str=internetAddress().toString()+String(":")+String().fromInt(port())+String(":");
if(PF_INET==family())str+="PF_INET";
else str+=String("Family:")+String().fromInt(family());
return str;
}
inline
int INETSocketAddress::length(void)
{
return sizeof(sockaddr_in);
}
#endif