我正在尝试编写一个客户端服务器对,其中连接整天处于活动状态,客户端等待服务器发送消息。步骤是:
- 服务器打开端口并监听连接
- 客户端连接并等待数据
- 一段时间后(可能是几个小时),服务器将数据发送到客户端
- 客户端处理数据并将其返回给服务器
- 重复步骤 3 和 4
我可以让步骤 1-4 工作,但是如果我尝试重复步骤 3,我会在标题中得到错误。
这是我在客户端的方法:
private static void waitForInput(SSLSocket sslsocket) throws IOException {
do {
try {
ObjectInputStream ois = new ObjectInputStream(sslsocket.getInputStream());
ObjectOutputStream oos = new ObjectOutputStream(sslsocket.getOutputStream());
Object o = (Object) (ois.readObject());
// excluded code to process data
oos.flush();
oos.writeObject(o);
oos.reset();
}
catch(ClassNotFoundException e){
System.err.println(e.getMessage());
}
} while ( true );
}
代码在第 4 行失败,第一次阻塞并等到我得到下一位数据,但它没有工作两次。我究竟做错了什么?