Java:防止Socket DataInputStream抛出EOFException

时间:2011-01-18 21:30:57

标签: java datainputstream eofexception

我的客户端/服务器应用程序当前每次想要发送/接收数据时都会保持打开和关闭新连接。我正在尝试更改它,因此它将有一个持久连接。

我遇到的问题是服务器上的套接字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(),但都没有工作。

1 个答案:

答案 0 :(得分:2)

如果您收到EOFException,则表示连接已消失。您不能等待已关闭的连接。继续处理客户端代码,以便它不会关闭连接。在服务器端,任何读取方法都将阻塞,直到数据可用而无需您的进一步努力。