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
-
分享到:
相关推荐
10. **网络编程库的使用**:如ACE、Poco等第三方库,它们提供了丰富的网络编程接口,简化了开发过程。 总的来说,《Visual C++网络高级编程》是一本全面的指南,不仅讲解了网络编程的基本概念,还深入到高级主题,...
《VC++网络编程指南》是一份详尽的资源集合,主要针对使用Visual C++进行网络编程的开发者。这个压缩包包含了大量的信息,旨在帮助程序员深入理解和应用C++语言进行网络通信。以下是一些核心知识点的详细说明: 1. ...
在C++中,网络编程主要依赖于标准库中的`<iostream>`、`<sstream>`和第三方库如Boost.Asio或Poco.NET。这些库提供了处理套接字、网络连接和数据传输的功能。例如,Boost.Asio是一个强大的跨平台库,提供异步I/O操作...
3. **Linux Socket编程**:Socket是网络通信的基础,它提供了一种进程间通信(IPC)的方式,特别是在网络环境中。在Linux系统中,使用socket API进行网络编程,包括建立连接、发送和接收数据、错误处理等。 4. **跨...
8. **网络库的使用**:例如,Poco库提供了丰富的网络编程接口,简化了许多网络编程任务。 9. **设计模式与最佳实践**:在开发网络服务时,理解如何应用设计模式(如工厂模式、观察者模式)以及遵循最佳实践,如资源...
3. **库文件**:可能使用了一些C++标准库,如iostream(输入/输出)、thread(多线程)、socket(网络编程)等,以及可能的第三方库,如QT或Poco库,用于图形界面和网络通信。 4. **资源文件**:可能包含GUI设计的...
5. **C++网络库**:可以使用第三方库如Poco、Boost.Asio或者libuv来简化C++中的网络编程。这些库提供了高级抽象,使开发者能够更方便地处理网络连接和端口映射。 实现端口映射的过程通常包括以下步骤: 1. **创建...
3. **Multicast_Send和Multicast_Received文件学习指南** - **Multicast_Send**:这个文件应该是实现组播发送功能的代码。你需要关注如何创建和配置组播套接字,设置组播选项,以及如何发送数据到组播地址。理解...
然而,由于C++的跨平台特性,以及可能使用的第三方库如Boost或Poco的跨平台支持,这个服务器代码也有可能被移植到Linux系统上。在Linux上运行时,可能需要替换某些Windows特定的API调用,并使用类似POSIX的接口来...
标题中的"IMG_Transfer_via_UDP"是一个项目,其目标是实现通过UDP(用户数据报协议)在...等到项目完成后,可能还会涉及到文档编写,包括API参考、用户指南、安装和配置说明等,帮助其他开发者理解和使用这个项目。