C++ POCO库中文编程参考指南(3) Poco::Net::Socket

1 SelectMode

enum SelectMode
    /// The mode argument to poll() and select().
{
    SELECT_READ  = 1,
    SELECT_WRITE = 2,
    SELECT_ERROR = 4
};

2 SocketList

typedef 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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索socket
, int
, const
, sockets
, bool
, c++ socket
, container端口
void
opengl编程指南、android编程权威指南、c 编程指南、pig编程指南、opengl编程指南 第8版,以便于您获取更多的相关知识。

时间: 2024-09-03 20:35:46

C++ POCO库中文编程参考指南(3) Poco::Net::Socket的相关文章

C++ POCO库中文编程参考指南(11) 如何使用Reactor框架?

1 Reactor 框架概述 POCO 中的 Reactor 框架是基于 Reactor 设计模式进行设计的.其中由 Handler 将某 Socket 产生的事件,发送到指定的对象的方法上,作为回调. 2 光说不练假把式 PoechantReactorServer 类,基本与 PoechantTCPServer: class PoechantReactorServer: public ServerApplication { public: PoechantServer() {} //: _he

C++ POCO库中文编程参考指南(8) 丰富的Socket编程

1 POCO 中的 Socket POCO 中有 丰富的 Socket 封装.其继承关系如下: 本文暂且只介绍 StreamSocket.ServerSocket.DatagramSocket 2 Poco::Net::ServerSocket ServerSocket 是一个封装层次比较低(low level)的 Socket,其使用的是 TCP 连接.在实际的 Server 中推荐使用 TCPServer 或 Reactor 框架.下面是例程: #include "Poco/Net/Serv

POCO库中文编程参考指南(3)Poco::Net::Socket

POCO库中文编程参考指南(3)Poco::Net::Socket 作者:柳大·Poechant 博客:Blog.CSDN.net/Poechant 邮箱:zhongchao.ustc#gmail.com (# -> @) 日期:April 14th, 2012 1 SelectMode enum SelectMode /// The mode argument to poll() and select(). { SELECT_READ = 1, SELECT_WRITE = 2, SELECT

POCO库中文编程参考指南(11)如何使用Reactor框架?

1 Reactor 框架概述 POCO 中的 Reactor 框架是基于 Reactor 设计模式进行设计的.其中由 Handler 将某 Socket 产生的事件,发送到指定的对象的方法上,作为回调. 2 光说不练假把式 PoechantReactorServer 类,基本与 PoechantTCPServer: class PoechantReactorServer: public ServerApplication { public: PoechantServer() {} //: _he

POCO库中文编程参考指南(8)丰富的Socket编程

POCO库中文编程参考指南(8)丰富的Socket编程 作者:柳大·Poechant 博客:Blog.CSDN.net/Poechant 邮箱:zhongchao.ustc#gmail.com (# -> @) 日期:April 16th, 2012 1 POCO 中的 Socket POCO 中有 丰富的 Socket 封装.其继承关系如下: 本文暂且只介绍 StreamSocket.ServerSocket.DatagramSocket 2 Poco::Net::ServerSocket S

POCO库中文编程参考指南(1)总览

POCO库中文编程参考指南(1)总览 作者:柳大·Poechant 博客:Blog.CSDN.net/Poechant 邮箱:zhongchao.ustc#gmail.com (# -> @) 日期:April 14th, 2012 1 What is POCO? POCO 是什么?这是我最常被人问到的.POCO 是 POrtable COmponents 的缩写,官方主页:POCOProject.org.是一个非常出色的 C++ 库,相当于 Java 的 Class Library..NET

POCO库中文编程参考指南(2)基本数据类型(Poco/Types.h)

POCO库中文编程参考指南(2)基本数据类型 作者:柳大·Poechant 博客:Blog.CSDN.net/Poechant 邮箱:zhongchao.ustc#gmail.com (# -> @) 日期:April 14th, 2012 基本类型在Poco/Types.h头文件中.以下以 GNU C/C++ 和 CLang 为例.不过要强调的是,POCO 有极好的跨平台性,你能想到的平台,几乎都可以运行 POCO. 1 有符号整型 typedef signed char Int8; type

POCO库中文编程参考指南(4)Poco::Net::IPAddress

POCO库中文编程参考指南(4)Poco::Net::IPAddress 作者:柳大·Poechant 博客:Blog.CSDN.net/Poechant 邮箱:zhongchao.ustc#gmail.com (# -> @) 日期:April 14th, 2012 1 Poco::Net::IPAddress 地址最大长度,IPv4 是 in_addr 的长度,IPv6 是 in6_addr 的长度 enum { MAX_ADDRESS_LENGTH = #if defined(POCO_H

C++ POCO库中文编程参考指南(4) Poco::Net::IPAddress

1 Poco::Net::IPAddress 地址最大长度,IPv4 是 in_addr 的长度, IPv6 是 in6_addr 的长度 enum { MAX_ADDRESS_LENGTH = #if defined(POCO_HAVE_IPv6) sizeof(struct in6_addr) #else sizeof(struct in_addr) #endif /// Maximum length in bytes of a socket address. }; 1.1 IPv4 or

C++ POCO库中文编程参考指南(1) 总览

1 What is POCO? POCO 是什么?这是我最常被人问到的.POCO 是 POrtable COmponents 的缩写,官方主页:POCOProject.org.是一个非常出色的 C++ 库,相当于 Java 的 Class Library..NET 的 Framework 和 Apple 的 Cocoa.它与 Boost 是非常不同的,简单说 Boost 就是相当于 Advanced STL. 2 本系列文章所使用的 POCO 版本 POCO C++ Library 1.4.3p