⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ipsock.h

📁 pwlib源码库
💻 H
📖 第 1 页 / 共 2 页
字号:
 * * Revision 1.14  1995/10/14 14:57:26  robertj * Added internet address to string conversion functionality. * * Revision 1.13  1995/07/02 01:18:19  robertj * Added static functions to get the current host name/address. * * Revision 1.12  1995/06/17 00:41:40  robertj * More logical design of port numbers and service names. * * Revision 1.11  1995/03/18 06:26:44  robertj * Changed IP address variable for GNU compatibility. * * Revision 1.10  1995/03/14  12:41:38  robertj * Updated documentation to use HTML codes. * * Revision 1.9  1995/03/12  04:38:41  robertj * Added more functionality. * * Revision 1.8  1995/01/02  12:28:24  robertj * Documentation. * Added more socket functions. * * Revision 1.7  1995/01/01  01:07:33  robertj * More implementation. * * Revision 1.6  1994/12/15  12:47:14  robertj * Documentation. * * Revision 1.5  1994/08/23  11:32:52  robertj * Oops * * Revision 1.4  1994/08/22  00:46:48  robertj * Added pragma fro GNU C++ compiler. * * Revision 1.3  1994/08/21  23:43:02  robertj * Spelt Berkeley correctly. * * Revision 1.2  1994/07/25  03:36:03  robertj * Added sockets to common, normalising to same comment standard. * */#ifndef _PIPSOCKET#define _PIPSOCKET#ifdef P_USE_PRAGMA#pragma interface#endif#include <ptlib/socket.h>#ifdef P_HAS_QOS#ifdef _WIN32#ifdef P_KNOCKOUT_WINSOCK2    #include "IPExport.h"#endif // KNOCKOUT_WINSOCK2#endif // _WIN32#endif // P_HAS_QOS/** This class describes a type of socket that will communicate using the   Internet Protocol.   If P_HAS_IPV6 is not set, IPv4 only is supported.   If P_HAS_IPV6 is set, both IPv4 and IPv6 adresses are supported, with    IPv4 as default. This allows to transparently use IPv4, IPv6 or Dual    stack operating systems. */class PIPSocket : public PSocket{  PCLASSINFO(PIPSocket, PSocket);  protected:    /* Create a new Internet Protocol socket based on the port number       specified.     */    PIPSocket();  public:    /**      A class describing an IP address     */    class Address : public PObject {      public:        /**@name Address constructors */        //@{        /// Create an IPv4 address with the default address: 127.0.0.1 (loopback)        Address();        /** Create an IP address from string notation.            eg dot notation x.x.x.x. for IPv4, or colon notation x:x:x::xxx for IPv6          */        Address(const PString & dotNotation);        /// Create an IPv4 or IPv6 address from 4 or 16 byte values        Address(PINDEX len, const BYTE * bytes);        /// Create an IP address from four byte values        Address(BYTE b1, BYTE b2, BYTE b3, BYTE b4);        /// Create an IPv4 address from a four byte value in network byte order        Address(DWORD dw);        /// Create an IPv4 address from an in_addr structure        Address(const in_addr & addr);#if P_HAS_IPV6        /// Create an IPv6 address from an in_addr structure        Address(const in6_addr & addr);        /// Create an IP (v4 or v6) address from a sockaddr (sockaddr_in,        /// sockaddr_in6 or sockaddr_in6_old) structure	Address(const int ai_family, const int ai_addrlen,struct sockaddr *ai_addr);#endif#ifdef __NUCLEUS_NET__        Address(const struct id_struct & addr);        Address & operator=(const struct id_struct & addr);#endif        /// Copy an address from another IP v4 address        Address & operator=(const in_addr & addr);#if P_HAS_IPV6        /// Copy an address from another IPv6 address        Address & operator=(const in6_addr & addr);#endif        /// Copy an address from a string        Address & operator=(const PString & dotNotation);        /// Copy an address from a four byte value in network order        Address & operator=(DWORD dw);        //@}        /// Compare two adresses for absolute (in)equality        Comparison Compare(const PObject & obj) const;        bool operator==(const Address & addr) const { return Compare(addr) == EqualTo; }        bool operator!=(const Address & addr) const { return Compare(addr) != EqualTo; }#if P_HAS_IPV6        bool operator==(in6_addr & addr) const;        bool operator!=(in6_addr & addr) const { return !operator==(addr); }#endif        bool operator==(in_addr & addr) const;        bool operator!=(in_addr & addr) const { return !operator==(addr); }        bool operator==(DWORD dw) const;        bool operator!=(DWORD dw) const   { return !operator==(dw); }#ifdef P_VXWORKS         bool operator==(long unsigned int u) const { return  operator==((DWORD)u); }        bool operator!=(long unsigned int u) const { return !operator==((DWORD)u); }#endif#ifdef _WIN32        bool operator==(unsigned u) const { return  operator==((DWORD)u); }        bool operator!=(unsigned u) const { return !operator==((DWORD)u); }#endif#ifdef P_RTEMS        bool operator==(u_long u) const { return  operator==((DWORD)u); }        bool operator!=(u_long u) const { return !operator==((DWORD)u); }#endif#ifdef __BEOS__        bool operator==(in_addr_t a) const { return  operator==((DWORD)a); }        bool operator!=(in_addr_t a) const { return !operator==((DWORD)a); }#endif        bool operator==(int i) const      { return  operator==((DWORD)i); }        bool operator!=(int i) const      { return !operator==((DWORD)i); }	/// Compare two addresses for equivalence. This will return TRUE        /// if the two addresses are equivalent even if they are IPV6 and IPV4#if P_HAS_IPV6        bool operator*=(const Address & addr) const;#else        bool operator*=(const Address & addr) const { return operator==(addr); }#endif        /// Format an address as a string        PString AsString() const;        /// Convert string to IP address. Returns TRUE if was a valid address.        BOOL FromString(          const PString & str        );        /// Format an address as a string        operator PString() const;        /// Return IPv4 address in network order        operator in_addr() const;#if P_HAS_IPV6        /// Return IPv4 address in network order        operator in6_addr() const;#endif        /// Return IPv4 address in network order        operator DWORD() const;        /// Return first byte of IPv4 address        BYTE Byte1() const;        /// Return second byte of IPv4 address        BYTE Byte2() const;        /// Return third byte of IPv4 address        BYTE Byte3() const;        /// Return fourth byte of IPv4 address        BYTE Byte4() const;        /// return specified byte of IPv4 or IPv6 address        BYTE operator[](PINDEX idx) const;        /// Get the address length (will be either 4 or 16)        PINDEX GetSize() const;        /// Get the pointer to IP address data        const char * GetPointer() const { return (const char *)&v; }        /// Get the version of the IP address being used        unsigned GetVersion() const { return version; }        /// Check address 0.0.0.0 or ::         BOOL IsValid() const;        BOOL IsAny() const;        /// Check address 127.0.0.1 or ::1        BOOL IsLoopback() const;        /// Check for Broadcast address 255.255.255.255        BOOL IsBroadcast() const;        // Check if the remote address is a private address.        // For IPV4 this is specified RFC 1918 as the following ranges:        //    10.0.0.0    - 10.255.255.255.255        //    172.16.0.0  - 172.31.255.255        //    192.168.0.0 - 192.168.255.255        // For IPV6 this is specified as any address having "1111 1110 1

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -