poco :: streamsocket:检测发送失败

Poco::StreamSocket: detect sending fail

本文关键字:失败 检测 streamsocket poco      更新时间:2023-10-16

,假设我有一个消息队列,例如std::deque<std::vector<uint8_t>>()我做了一个poll()(或选择),知道插座已经准备好写作。

我做:

const auto& message = _messageQueue.front();
_socket.sendBytes(message.data(), message.size());
_messageQueue.pop_front();

例如,我可以断言字节发送与消息大小相同,但是POCO文档说streamsocket :: sendbytes()

Returns the number of bytes sent, which may be less than the number of bytes specified.

POCO文档也没有说任何实际setBlocking()方法的内容。它会阻止直到收到ACK数据包并扔在套接字错误上吗?

示例,我可以断言字节发送与消息大小相同,但是POCO文档说StreamSocket::sendBytes()

返回发送的字节数,可能小于指定的字节数。

这仅在非阻滞模式下正确。在阻止模式下,除非有错误,否则i t将在返回之前传输所有字节。这是由Posix定义的,而不是由POCO定义。如果这里有一个实际的问题,我看不到它。

POCO文档也没有说任何实际setBlocking()方法的内容。它会阻止直到收到ACK数据包吗?

否。原因未来会读取要阻止直到存在数据或EOS或错误,并写入Bockuntil将数据复制到套接字发送缓冲区中的数据。