SocketAddress 封裝了 IP 地址與端口號,支持 IPv4 和 IPv6,提供了豐富的構造方式、訪問方法及字符串轉換功能。
enum {
MAX_ADDRESS_LENGTH =
#if defined(POCO_HAVE_IPv6)
sizeof(struct sockaddr_in6)
#else
sizeof(struct sockaddr_in)
#endif
// 最大 Socket 地址長度(字節)
};
SocketAddress():創建一個全零的 IPv4 通配地址(wildcard)。SocketAddress(const IPAddress& host, Poco::UInt16 port):從 IPAddress 和端口構造。SocketAddress(const std::string& host, Poco::UInt16 port):從主機字符串和端口構造。SocketAddress(const std::string& host, const std::string& port):主機與端口均為字符串。explicit SocketAddress(const std::string& hostAndPort):從 "host:port" 格式字符串解析。SocketAddress(const SocketAddress& addr):拷貝構造。SocketAddress(const struct sockaddr* addr, poco_socklen_t length):從原生 sockaddr 結構構造。void swap(SocketAddress& addr):交換地址。IPAddress host() const:獲取 IP 地址。Poco::UInt16 port() const:獲取端口號。IPAddress::Family family() const:獲取地址族(IPv4/IPv6)。poco_socklen_t length() const:獲取原生地址長度。const struct sockaddr* addr() const:獲取原生 sockaddr 指針。int af() const:獲取地址族常量(AF_INET/AF_INET6)。std::string toString() const:轉為 "host:port" 字符串。bool operator == (const SocketAddress& addr) constbool operator != (const SocketAddress& addr) constvoid init(const IPAddress& host, Poco::UInt16 port)void init(const std::string& host, Poco::UInt16 port)Poco::UInt16 resolveService(const std::string& service):解析服務名獲取端口號。轉載請注明來自柳大的 CSDN 博客:Blog.CSDN.net/Poechant