0

我有一个基于 libev 的套接字服务器,它从多个同时套接字获取消息

我使用 recv() 从套接字接收消息。和 send() 与套接字通信问题是,有时即使我做了一个 send() 并且 send() 的输出> 0 仍然另一端的套接字什么也没收到

代码的精简版本在这里 http://pastebin.com/SM7uPkVD

(大部分是从网络上剪下来的)

问题是 99% 的套接字通信都工作得很好,只是在某些地方失败了。我有什么明显的遗漏吗

4

1 回答 1

0

使用SOCK_STREAM套接字时,不能保证多次发送会导致多次接收。特别是,您的服务器可能会在第 124 行一次读取多个合并的请求,然后在第 135 行仅回复一次,导致您认为数据正在丢失。您应该检查是否readlen > 3验证这一点。

于 2013-04-04T08:08:18.207 回答