我正在尝试使用 C 系统调用编写一个简单的服务器,该服务器从未知客户端获取未知字节流并根据客户端输入执行特定操作。例如,客户端会发送一个命令“multiply 2 2”,服务器会将数字相乘并返回结果。
为了避免在客户端写入之前服务器读取错误,我有一个阻塞的 recv() 调用来等待使用 MSG_PEEK 的任何数据。当 recv 检测到要读取的数据时,我转到非阻塞 recv() 逐字节读取流。
除了客户端不发送数据的极端情况(即 write(socket, "", 0); )外,一切正常。我想知道如何准确检测到没有数据的消息已发送。在这种情况下, recv() 永远阻塞。
此外,这篇文章几乎总结了我的问题,但它并没有提出检测大小为 0 数据包的方法。 如果接收到有效载荷大小为 0 的有效 TCP 数据包,recv() 将返回什么值