123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- #include "StdAfx.h"
- #include "SockAddrIn.h"
- #include "SocketHandle.h"
- SockAddrIn SockAddrIn::NULLAddr;
- SockAddrIn::SockAddrIn()
- {
- Clear();
- }
- SockAddrIn::SockAddrIn(IN const SockAddrIn& sin)
- {
- Copy( sin );
- }
- SockAddrIn::~SockAddrIn(){}
- void SockAddrIn::Clear()
- {
- memset(this, 0, sizeof(sockaddr_storage));
- }
- SockAddrIn& SockAddrIn::Copy(IN const SockAddrIn& sin)
- {
- ss_family = sin.ss_family;
- memcpy(this, &sin, Size());
- return *this;
- }
- bool SockAddrIn::IsEqual(IN const SockAddrIn& sin) const
- {
- if ( ss_family == AF_INET )
- {
- return (memcmp(this, &sin, Size() - 8) == 0);
- }
-
- return (memcmp(this, &sin, Size()) == 0);
- }
- bool SockAddrIn::CreateFrom(IN LPCTSTR pszAddr, IN LPCTSTR pszService, IN int nFamily )
- {
- Clear();
- CSocketHandle::GetAddressInfo(pszAddr, pszService, nFamily, *this);
- return !IsNull();
- }
- bool SockAddrIn::CreateFrom(IN ULONG lIPAddr, IN USHORT nPort, IN int nFamily , IN bool bFmtHost )
- {
- Clear();
- _ASSERTE( nFamily == AF_INET );
- SOCKADDR_IN* psin = reinterpret_cast<SOCKADDR_IN*>(this);
- psin->sin_family = static_cast<short>(nFamily);
- if ( bFmtHost )
- {
- psin->sin_addr.s_addr = htonl( lIPAddr );
- psin->sin_port = htons( nPort );
- }
- else
- {
- psin->sin_addr.s_addr = lIPAddr;
- psin->sin_port = nPort;
- }
- return !IsNull();
- }
|