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