我一直在做套接字編程多年,但我從來沒有錯過使用TCP的消息 - 直到現在。我有一個java服務器和C客戶端 - 都在本地主機上。他們會以字符串的形式來回傳遞短信息,而且兩者之間有一些延遲。我有一個特殊情況,消息永遠不會到達客戶端。它是可重現的,但奇怪的是與機器有關。未接的套接字消息
爲了給出更多的細節,我可以調試服務器端,並看到發送,然後刷新。我可以附加到客戶端,並通過選擇的呼叫(循環),但它從來沒有出現。有沒有人遇到過這個問題,並且除編碼錯誤之外還有其他解釋嗎?
換句話說,如果你有一個連接的套接字,並在一邊進行寫操作,而在另一邊進行讀操作,那麼在中間會發生什麼類似的事情?
另一個細節 - 我已經在回送接口上使用tcpdump,並可以看到錯過的消息。
您的客戶端是多線程的嗎?是否有可能單獨的線程也選擇()該消息?另外,你在使用什麼操作系統? – 2009-06-18 04:26:10
我不認爲它有可能讓另一個線程選擇它。這是在Linux上。好主意 - 我用櫃檯覈實。 – AdamC 2009-06-18 04:59:11