Socket 類封裝了跨平台的套接字核心操作,包括阻塞控制、超時設置、緩沖區管理、選項配置、地址獲取及 select/poll 多路複用。
enum SelectMode {
SELECT_READ = 1, // 可讀
SELECT_WRITE = 2, // 可寫
SELECT_ERROR = 4 // 錯誤
};
typedef std::vector<Socket> SocketList;
Socket():未初始化的 Socket。Socket(const Socket& socket):拷貝構造(引用計數)。Socket& operator = (const Socket& socket):賦值運算符。支持 ==, !=, <, <=, >, >=,基於底層 SocketImpl 指針比較。
int available() const:返回可讀數據字節數(非阻塞)。void close():關閉 Socket。bool poll(const Poco::Timespan& timeout, int mode) const:檢查 Socket 狀態,mode 為 SelectMode 組合。SocketImpl* impl() const:獲取底層實現指針。bool secure() const:是否為 SSL/TLS 連接。void setSendBufferSize(int size) / int getSendBufferSize() constvoid setReceiveBufferSize(int size) / int getReceiveBufferSize() constvoid setSendTimeout(const Poco::Timespan& timeout) / Poco::Timespan getSendTimeout() constvoid setReceiveTimeout(const Poco::Timespan& timeout) / Poco::Timespan getReceiveTimeout() const支持 int、unsigned、unsigned char、Timespan、IPAddress 等類型的值設置與獲取,level/option 對應系統常量。
setLinger / getLinger、setNoDelay / getNoDelay (TCP_NODELAY)、setKeepAlive / getKeepAlivesetReuseAddress / getReuseAddress、setReusePort / getReusePortsetOOBInline / getOOBInline、setBlocking / getBlockingSocketAddress address() const:本地綁定地址。SocketAddress peerAddress() const:對端地址。static int select(SocketList& readList,
SocketList& writeList,
SocketList& exceptList,
const Poco::Timespan& timeout);
// 返回就緒 Socket 總數,並修改三個列表僅保留就緒項。
static bool supportsIPv4()static bool supportsIPv6()來自柳大的 CSDN 博客:Blog.CSDN.net/Poechant