C++ POCO库中文编程参考指南(3) Poco::Net::Socket2013-01-101 SelectMode
enum SelectMode /// The mode argument to poll() and select(). { SELECT_READ= 1, SELECT_WRITE = 2, SELECT_ERROR = 4 };
2 SocketListtypedef std::vector<Socket> SocketList;3 构造函数未初始化的 socket:Socket ();拷贝构造函数Socket(const Socket& socket);4 重载运算符赋值运算符:Socket& operator = (const Socket& socket);比较运算符:
bool operator == (const Socket& socket) const; bool operator != (const Socket& socket) const; bool operator <(const Socket& socket) const; bool operator <= (const Socket& socket) const; bool operator >(const Socket& socket) const; bool operator >= (const Socket& socket) const;
5 常用 socket 操作返回该 socket 的可读数据的字节数,该操作不引起 socket 阻塞:int available() const;关闭 socket:void close();poll:
bool poll(const Poco::Timespan& timeout, int mode) const; /// Determines the status of the socket, using a/// call to select(). ////// The mode argument is constructed by combining the values /// of the SelectMode enumeration. /// /// Returns true if the next operation corresponding to /// mode will not block, false otherwise. SocketImpl* impl() const; /// Returns the SocketImpl for this socket.
检查这个 socket 的连接是否是安全的(使用 SSL 或 TLS):bool secure() const;6 缓冲区发送数据的缓冲区:void setSendBufferSize(int size);int getSendBufferSize() const;接 收数据的缓冲区:void setReceiveBufferSize(int size);int getReceiveBufferSize() const;7 超时时间发送数据的超时时 间:void setSendTimeout(const Poco::Timespan& timeout);Poco::Timespan getSendTimeout() const;接收数据的超 时时间:void setReceiveTimeout(const Poco::Timespan& timeout);Poco::Timespan getReceiveTimeout() const;8 其他接口
void setOption(int level, int option, int value); void setOption(int level, int option, unsigned value); void setOption(int level, int option, unsigned char value); void setOption(int level, int option, const Poco::Timespan& value); void setOption(int level, int option, const IPAddress& value); void getOption(int level, int option, int& value) const; void getOption(int level, int option, unsigned& value) const; void getOption(int level, int option, unsigned char& value) const; void getOption(int level, int option, Poco::Timespan& value) const; void getOption(int level, int option, IPAddress& value) const; void setLinger(bool on, int seconds); void getLinger(bool& on, int& seconds) const; void setNoDelay(bool flag); bool getNoDelay() const; void setKeepAlive(bool flag); bool getKeepAlive() const; void setReuseAddress(bool flag); bool getReuseAddress() const; void setReusePort(bool flag); bool getReusePort() const; void setOOBInline(bool flag); bool getOOBInline() const; void setBlocking(bool flag); bool getBlocking() const;
获取 socket 的 IP 和端口:SocketAddress address() const;获取 peer socket 的 IP 地 址和端口:SocketAddress peerAddress() const;9 静态函数select:
static int select(SocketList& readList, SocketList& writeList,SocketList& exceptList,const Poco::Timespan& timeout); /// Determines the status of one or more sockets,/// using a call to select(). /// /// ReadList contains the list of sockets which should be /// checked for readability. /// /// WriteList contains the list of sockets which should be /// checked for writeability. /// /// ExceptList contains a list of sockets which should be /// checked for a pending error. /// /// Returns the number of sockets ready. /// /// After return,/// * readList contains those sockets ready for reading, /// * writeList contains those sockets ready for writing, /// * exceptList contains those sockets with a pending error. /// /// If the total number of sockets passed in readList, writeList and /// exceptList is zero, select() will return immediately and the /// return value will be 0. /// /// If one of the sockets passed to select() is closed while /// select() runs, select will return immediately. However, /// the closed socket will not be included in any list. /// In this case, the return value may be greater than the sum /// of all sockets in all list.
检查是否支持 IPv4 或 IPv6 :static bool supportsIPv4();static bool supportsIPv6 ();来自柳大的CSDN博客:Blog.CSDN.net/Poechant查看全套文章:http://www.bianceng.cn/Programming/cplus/201301/35022.htm