我一直在做套接字编程多年,但我从来没有错过使用TCP的消息 - 直到现在。我有一个java服务器和C客户端 - 都在本地主机上。他们会以字符串的形式来回传递短信息,而且两者之间有一些延迟。我有一个特殊情况,消息永远不会到达客户端。它是可重现的,但奇怪的是与机器有关。未接的套接字消息
为了给出更多的细节,我可以调试服务器端,并看到发送,然后刷新。我可以附加到客户端,并通过选择的呼叫(循环),但它从来没有出现。有没有人遇到过这个问题,并且除编码错误之外还有其他解释吗?
换句话说,如果你有一个连接的套接字,并在一边进行写操作,而在另一边进行读操作,那么在中间会发生什么类似的事情?
另一个细节 - 我已经在回送接口上使用tcpdump,并可以看到错过的消息。
您的客户端是多线程的吗?是否有可能单独的线程也选择()该消息?另外,你在使用什么操作系统? – 2009-06-18 04:26:10
我不认为它有可能让另一个线程选择它。这是在Linux上。好主意 - 我用柜台核实。 – AdamC 2009-06-18 04:59:11