/////////////////////////////////////////////////////////////////////////////
-// 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)
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>>24) & 0xff),
- (unsigned char)((raw>>16) & 0xff),
- (unsigned char)((raw>>8) & 0xff),
- (unsigned char)(raw & 0xff)
+ 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
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);
#endif // wxUSE_IPV6
-#if defined(__UNIX__) && !defined(__WINE__) && (!defined(__WXMAC__) || defined(__DARWIN__))
+#if defined(__UNIX__) && !defined(__WINDOWS__) && !defined(__WINE__) && (!defined(__WXMAC__) || defined(__DARWIN__))
// ---------------------------------------------------------------------------
// wxUNIXaddress