1

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

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

4

1 回答 1

2

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

于 2011-01-18T21:38:47.693 回答