0
我有来自多个simultaneos插座libev套接字通信失败
我使用的recv()从插座接收消息获取消息的基于libev套接字服务器。和send()向插座 沟通的问题是,有时候即使我做了send()和发送的输出()> 0 仍然对对方的套接字接收任何
的剥离下来代码的版本在这里 http://pastebin.com/SM7uPkVD
(大部分是从网上剪切粘贴)
的问题是socket通信工作精绝时代的99%,这只是一些地方这失败。 是否有一些明显的东西我缺少
是否有没有缓冲区的实现。使用其他流。因此,每次写入和读取都将分开处理 – Ram 2013-04-04 11:57:08
这种情况发生的原因很多:降低IPC开销。与其试图避免它,你应该通过分割来自大量接收数据的多个请求来利用它。这可以通过搜索一个请求结束标记(将\ n \ r'做些什么?),在每个请求前加上它的大小,或者简单地说,通过具有固定大小的请求来完成。 – jop 2013-04-04 12:39:43
如果我的数据大小保证很小(小于1kb),并且我也可以控制它,那么执行read()或recv()的最佳方法是什么。我应该每次读1个字符查找“\ r”来结束覆盖或将发送程序更改为固定宽度的前缀 – Ram 2013-04-04 13:25:49