java - 丢失的套接字消息

标签 java c sockets

多年来我一直在进行套接字编程,但我从未使用 TCP 错过任何消息 - 直到现在。我在 C 中有一个 Java 服务器和一个客户端 - 都在本地主机上。他们以字符串形式来回发送短消息,中间有一些延迟。我有一个特殊情况,消息永远不会到达客户端。它是可重现的,但奇怪的是依赖于机器。

要提供更多详细信息,我可以调试服务器端并查看发送和刷新。我可以附加到客户端并遍历选择调用(在循环中),但它根本不会出现。有没有人遇到过这种情况,除了编码错误之外还有其他解释吗?

换句话说,如果您有一个已连接的套接字,并且在一侧进行写入操作并在另一侧进行读取操作,中间会发生什么情况会导致这样的情况发生?

另一个细节 - 我在环回接口(interface)上使用了 tcpdump,可以看到丢失的消息。

最佳答案

我以前在 SMTP 事务中看到过这种情况。你在那台机器上运行病毒扫描程序吗?如果是这样,请尝试将其关闭,看看是否有所不同。

否则,我建议安装 Wireshark这样您就可以了解实际情况。

关于java - 丢失的套接字消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1010753/

相关文章:

java - 以编程方式更改区域设置在 Android 6.0.1 上不起作用

java - 使用 jmeter 和 http 请求测试 Soap Web 服务

java - 使用 JACKSON 将 JAXB 转换为 JSON

C11 类型泛型表达式 - 为什么不直接添加函数重载?

c - 服务器 - 客户端通信

java - 播放 UDP 数据包中收到的原始 PCM 音频

java - 在 Android 6.0 上切换飞行模式

c - Swift - 将转义闭包传递给 C API 回调

c# - 如何在 C# 中通过基于 TCP 协议(protocol)的套接字发送文件?

java - TTL>1 时多播 socket.close 需要 3 分钟