我在应用程序中运行2个线程。一种检查输入数据包,另一种处理和发送数据包。他们俩都在同一流中做到这一点。
示例1:
while (connection open) {
in.readObject() instanceof ...
}
示例2:
while (connection open) {
processPacket(in)
}
我很确定EOFException是线程尝试同时使用流时。这不是一个恒定的EOF,但是就像每隔一秒钟我得到一个EOF一样,其余的都可以正常工作。这就是为什么我怀疑它们重叠并尝试同时使用流。
如果这是问题所在,那么有人知道如何在保持当前更新速度并使用两个线程的情况下,使它们一次又一次地同步吗?
我需要两个线程,因为对传入消息的检查会在一行中等待,直到接收到数据包为止,并且我需要服务器不断发送进程并检查数据包。
如何修复EOFException?
最佳答案
如果收到EOFException,则通常意味着另一端挂断了。您通常会在阅读方面获得这些。
这是类似的question
编辑1:问题实际上是为什么插座是关闭的。可能由于多种原因,服务器端的可编程计时器在X分钟内不检查任何数据,防火墙关闭了连接,网络中断等。
关于java - Java EOFException服务器/客户端TCP应用程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10720839/