【发布时间】:2011-08-11 07:04:44
【问题描述】:
好的,我有一个名为“Client”的线程类,每次服务器接受连接时,它都会创建一个新的 Client..run 方法侦听来自客户端的消息,我正在使用 ObjectInputStream..
do {
ObjectInputStream in = null;
try {
in = new ObjectInputStream(socket.getInputStream());
String message = (String) in.readObject();
System.out.println(message);
}
catch (ClassNotFoundException ex) {
isConnected = false;
System.out.println("Progoramming Error");
}
catch (IOException ex) {
isConnected = false;
System.out.println("Server ShutDown");
System.exit(0);
}
} while(isConnected);
我遇到的问题是,为什么每次循环时我都必须创建一个新的 ObjectInputStream...如果我在循环结束时关闭输入流并再次循环以获取另一条消息,我将收到错误...请有人帮忙
【问题讨论】:
-
您不必,也不应该这样做。
-
获得 ClassNotFoundException 既不是您不再连接的指示,也不是编程错误。它表示部署错误。
-
您能否解决您遇到的错误,如果您也发布客户端代码也会有所帮助。
-
isConnected()不是活动连接的有效测试。连接一直到您读取流结束,或出现SocketTimeoutException以外的IOException。
标签: java sockets objectinputstream