多年来我一直在进行套接字编程,但我从未使用 TCP 错过任何消息 - 直到现在。我在 C 中有一个 Java 服务器和一个客户端 - 都在本地主机上。他们以字符串形式来回发送短消息,中间有一些延迟。我有一个特殊情况,消息永远不会到达客户端。它是可重现的,但奇怪的是依赖于机器。
要提供更多详细信息,我可以调试服务器端并查看发送和刷新。我可以附加到客户端并遍历选择调用(在循环中),但它根本不会出现。有没有人遇到过这种情况,除了编码错误之外还有其他解释吗?
换句话说,如果您有一个已连接的套接字,并且在一侧进行写入操作并在另一侧进行读取操作,中间会发生什么情况会导致这样的情况发生?
另一个细节 - 我在环回接口(interface)上使用了 tcpdump,可以看到丢失的消息。
最佳答案
我以前在 SMTP 事务中看到过这种情况。你在那台机器上运行病毒扫描程序吗?如果是这样,请尝试将其关闭,看看是否有所不同。
否则,我建议安装 Wireshark这样您就可以了解实际情况。
关于java - 丢失的套接字消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1010753/