X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/12028905135250524409f1e7b9bfa9c55e5ce16b..8084f8b7c6dd538fce55d2542e9b2e70bc69f760:/include/wx/sckaddr.h diff --git a/include/wx/sckaddr.h b/include/wx/sckaddr.h index fb165f0885..5facf0db69 100644 --- a/include/wx/sckaddr.h +++ b/include/wx/sckaddr.h @@ -12,10 +12,6 @@ #ifndef _WX_NETWORK_ADDRESS_H #define _WX_NETWORK_ADDRESS_H -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma interface "sckaddr.h" -#endif - #include "wx/defs.h" #if wxUSE_SOCKETS @@ -52,57 +48,123 @@ private: void Init(); }; -class WXDLLIMPEXP_NET wxIPV4address : public wxSockAddress { +// Interface to an IP address (either IPV4 or IPV6) +class WXDLLIMPEXP_NET wxIPaddress : public wxSockAddress { + DECLARE_ABSTRACT_CLASS(wxIPaddress) +public: + wxIPaddress(); + wxIPaddress(const wxIPaddress& other); + virtual ~wxIPaddress(); + + virtual bool Hostname(const wxString& name) = 0; + virtual bool Service(const wxString& name) = 0; + virtual bool Service(unsigned short port) = 0; + + virtual bool LocalHost() = 0; + virtual bool IsLocalHost() const = 0; + + virtual bool AnyAddress() = 0; + virtual bool BroadcastAddress() = 0; + + virtual wxString IPAddress() const = 0; + + virtual wxString Hostname() const = 0; + virtual unsigned short Service() const = 0; +}; + +class WXDLLIMPEXP_NET wxIPV4address : public wxIPaddress { DECLARE_DYNAMIC_CLASS(wxIPV4address) public: wxIPV4address(); wxIPV4address(const wxIPV4address& other); virtual ~wxIPV4address(); - bool Hostname(const wxString& name); + // IPV4 name formats + // + // hostname + // dot format a.b.c.d + virtual bool Hostname(const wxString& name); bool Hostname(unsigned long addr); - bool Service(const wxString& name); - bool Service(unsigned short port); - bool LocalHost(); - bool AnyAddress(); + virtual bool Service(const wxString& name); + virtual bool Service(unsigned short port); - wxString Hostname(); + // localhost (127.0.0.1) + virtual bool LocalHost(); + virtual bool IsLocalHost() const; + + // any (0.0.0.0) + virtual bool AnyAddress(); + // all (255.255.255.255) + virtual bool BroadcastAddress(); + + virtual wxString Hostname() const; wxString OrigHostname() { return m_origHostname; } - unsigned short Service(); - wxString IPAddress() const; + virtual unsigned short Service() const; + + // a.b.c.d + virtual wxString IPAddress() const; virtual int Type() { return wxSockAddress::IPV4; } virtual wxSockAddress *Clone() const; + bool operator==(const wxIPV4address& addr) const; + private: wxString m_origHostname; }; -#ifdef ENABLE_IPV6 -class WXDLLIMPEXP_NET wxIPV6address : public wxSockAddress { + +// the IPv6 code probably doesn't work, untested -- set to 1 at your own risk +#ifndef wxUSE_IPV6 + #define wxUSE_IPV6 0 +#endif + +#if wxUSE_IPV6 + +class WXDLLIMPEXP_NET wxIPV6address : public wxIPaddress { DECLARE_DYNAMIC_CLASS(wxIPV6address) private: - struct sockaddr_in6 *m_addr; + wxString m_origHostname; public: wxIPV6address(); wxIPV6address(const wxIPV6address& other); virtual ~wxIPV6address(); - bool Hostname(const wxString& name); + // IPV6 name formats + // + // hostname + // 3ffe:ffff:0100:f101:0210:a4ff:fee3:9566 + // compact (base85) Itu&-ZQ82s>J%s99FJXT (depends on platform api) + // compressed format ::1 + // ipv4 mapped ::ffff:1.2.3.4 + virtual bool Hostname(const wxString& name); + bool Hostname(unsigned char addr[16]); - bool Service(const wxString& name); - bool Service(unsigned short port); - bool LocalHost(); + virtual bool Service(const wxString& name); + virtual bool Service(unsigned short port); + + // localhost (0000:0000:0000:0000:0000:0000:0000:0001 (::1)) + virtual bool LocalHost(); + virtual bool IsLocalHost() const; + + // any (0000:0000:0000:0000:0000:0000:0000:0000 (::)) + virtual bool AnyAddress(); + // all (?) + virtual bool BroadcastAddress(); - wxString Hostname() const; - unsigned short Service() const; + // 3ffe:ffff:0100:f101:0210:a4ff:fee3:9566 + virtual wxString IPAddress() const; + + virtual wxString Hostname() const; + virtual unsigned short Service() const; virtual int Type() { return wxSockAddress::IPV6; } virtual wxSockAddress *Clone() const { return new wxIPV6address(*this); } }; -#endif -#if defined(__UNIX__) && !defined(__WINE__) && (!defined(__WXMAC__) || defined(__DARWIN__)) +#endif // wxUSE_IPV6 + +#if defined(__UNIX__) && !defined(__WINE__) && (!defined(__WXMAC__) || defined(__DARWIN__)) && !defined(__WXMSW__) #include #ifndef __VMS__ # include