我的客户端/服务器应用程序当前每次想要发送/接收数据时都会保持打开和关闭新连接。我正在尝试更改它,因此它将有一个持久连接。
我遇到的问题是服务器上的套接字DataInputStream在我只是希望它阻塞直到它收到下一批数据时仍然会抛出EOFException。
我只想简单地写这样的服务器......
while socket is open {
while at socket's DataInputStream's EOF {
wait a second
}
//If we're here, then we have some data
do stuff
}
...但这非常难看,而且在收到某些数据之前不是正确的阻止方式。
是否有更简洁的方法告诉套接字阻塞,直到有一些数据需要读取?我已经尝试过read()和readFully(),但都没有工作。
答案 0 :(得分:2)
如果您收到EOFException,则表示连接已消失。您不能等待已关闭的连接。继续处理客户端代码,以便它不会关闭连接。在服务器端,任何读取方法都将阻塞,直到数据可用而无需您的进一步努力。