libev socket通信失败

时间:2013-04-04 06:42:47

标签: c sockets libev

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

我使用recv()从套接字接收消息。并发送()与套接字进行通信 问题是有时即使我执行send()并且send()的输出是> 0 另一边的插座仍然没有收到任何东西

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

(大部分都是从互联网上剪下来的)

问题是,套接字通信的99%的时间都可以正常工作,只有一些地方失败了。 是否有一些我想念的明显事物

1 个答案:

答案 0 :(得分:0)

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