/////////////////////////////////////////////////////////////////////////////
-// Name: sckaddr.cpp
+// Name: src/common/sckaddr.cpp
// Purpose: Network address manager
// Author: Guilhem Lavaux
// Modified by:
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
- #pragma implementation "sckaddr.h"
-#endif
-
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
- #pragma hdrstop
+ #pragma hdrstop
#endif
#if wxUSE_SOCKETS
#ifndef WX_PRECOMP
- #include "wx/defs.h"
#include "wx/object.h"
#include "wx/log.h"
#include "wx/intl.h"
#if wxUSE_IPV6
IMPLEMENT_DYNAMIC_CLASS(wxIPV6address, wxIPaddress)
#endif
-#if defined(__UNIX__) && !defined(__WINE__) && (!defined(__WXMAC__) || defined(__DARWIN__))
+#if defined(__UNIX__) && !defined(__WINDOWS__) && !defined(__WINE__) && (!defined(__WXMAC__) || defined(__DARWIN__))
IMPLEMENT_DYNAMIC_CLASS(wxUNIXaddress, wxSockAddress)
#endif
void wxSockAddress::SetAddress(GAddress *address)
{
- GAddress_destroy(m_address);
- m_address = GAddress_copy(address);
+ if ( address != m_address )
+ {
+ GAddress_destroy(m_address);
+ m_address = GAddress_copy(address);
+ }
}
wxSockAddress& wxSockAddress::operator=(const wxSockAddress& addr)
bool wxIPV4address::Hostname(const wxString& name)
{
// Some people are sometimes fool.
- if (name == wxT(""))
+ if (name.empty())
{
wxLogWarning( _("Trying to solve a NULL hostname: giving up") );
- return FALSE;
+ return false;
}
m_origHostname = name;
return (GAddress_INET_SetHostName(m_address, name.mb_str()) == GSOCK_NOERROR);
return (Hostname() == wxT("localhost") || IPAddress() == wxT("127.0.0.1"));
}
+bool wxIPV4address::BroadcastAddress()
+{
+ return (GAddress_INET_SetBroadcastAddress(m_address) == GSOCK_NOERROR);
+}
+
bool wxIPV4address::AnyAddress()
{
return (GAddress_INET_SetAnyAddress(m_address) == GSOCK_NOERROR);
}
wxString wxIPV4address::IPAddress() const
-{
- unsigned long raw = GAddress_INET_GetHostAddress(m_address);
- return wxString::Format(
- _T("%u.%u.%u.%u"),
- (unsigned char)(raw & 0xff),
- (unsigned char)((raw>>8) & 0xff),
- (unsigned char)((raw>>16) & 0xff),
- (unsigned char)((raw>>24) & 0xff)
- );
+{
+ unsigned long raw = GAddress_INET_GetHostAddress(m_address);
+ return wxString::Format(_T("%lu.%lu.%lu.%lu"),
+ (raw>>24) & 0xff,
+ (raw>>16) & 0xff,
+ (raw>>8) & 0xff,
+ raw & 0xff
+ );
}
-bool wxIPV4address::operator==(wxIPV4address& addr)
+bool wxIPV4address::operator==(const wxIPV4address& addr) const
{
- if(Hostname().Cmp(addr.Hostname().c_str()) == 0 && Service() == addr.Service()) return true;
- return false;
+ return Hostname().Cmp(addr.Hostname()) == 0 &&
+ Service() == addr.Service();
}
#if wxUSE_IPV6
bool wxIPV6address::Hostname(const wxString& name)
{
- if (name == wxT(""))
+ if (name.empty())
{
wxLogWarning( _("Trying to solve a NULL hostname: giving up") );
- return FALSE;
+ return false;
}
return (GAddress_INET_SetHostName(m_address, name.mb_str()) == GSOCK_NOERROR);
}
bool wxIPV6address::Hostname(unsigned char[16] WXUNUSED(addr))
{
- return TRUE;
+ return true;
}
bool wxIPV6address::Service(const wxString& name)
return (Hostname() == wxT("localhost") || IPAddress() == wxT("127.0.0.1"));
}
+bool wxIPV6address::BroadcastAddress()
+{
+ return (GAddress_INET_SetBroadcastAddress(m_address) == GSOCK_NOERROR);
+}
+
bool wxIPV6address::AnyAddress()
{
return (GAddress_INET_SetAnyAddress(m_address) == GSOCK_NOERROR);
}
wxString wxIPV6address::IPAddress() const
-{
- unsigned long raw = GAddress_INET_GetHostAddress(m_address);
- return wxString::Format(
- _T("%u.%u.%u.%u"),
- (unsigned char)(raw & 0xff),
- (unsigned char)((raw>>8) & 0xff),
- (unsigned char)((raw>>16) & 0xff),
- (unsigned char)((raw>>24) & 0xff)
- );
+{
+ unsigned long raw = GAddress_INET_GetHostAddress(m_address);
+ return wxString::Format(
+ _T("%u.%u.%u.%u"),
+ (unsigned char)((raw>>24) & 0xff),
+ (unsigned char)((raw>>16) & 0xff),
+ (unsigned char)((raw>>8) & 0xff),
+ (unsigned char)(raw & 0xff)
+ );
}
wxString wxIPV6address::Hostname() const
#endif // wxUSE_IPV6
-#if defined(__UNIX__) && !defined(__WINE__) && (!defined(__WXMAC__) || defined(__DARWIN__))
+#if defined(__UNIX__) && !defined(__WINDOWS__) && !defined(__WINE__) && (!defined(__WXMAC__) || defined(__DARWIN__))
// ---------------------------------------------------------------------------
// wxUNIXaddress
path[0] = 0;
GAddress_UNIX_GetPath(m_address, path, 1024);
-
+
return wxString::FromAscii(path);
}