【发布时间】:2014-04-30 10:41:33
【问题描述】:
我是套接字编程和线程的新手。如果有人可以帮助我,我会很高兴。 我目前正在研究一个多客户端服务器问题,其中每个新客户端连接都有自己的线程和一个小程序。这是一个代码sn-p,当它断开连接时,何时关闭客户端的线程。
String inputMessage; //message stored here
BufferedReader in = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
while((inputMessage = in.readLine()) != null){
//Update message buffer with message that client has typed
buffer.insertMessage(inputMessage);
}
// Close things
in.close();
socket.close();
因此,当从 BufferedReader 读取 null 时,它会退出 while 循环。 我的问题是这在 linux 中完美运行。当在小程序的一角按下 x 时,bufferedReader 得到一个 null 并且线程优雅地终止。
当我在 Windows 中尝试这个时,我得到一个 SocketException: Connection reset
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
at sun.nio.cs.StreamDecoder.read(Unknown Source)
at java.io.InputStreamReader.read(Unknown Source)
at java.io.BufferedReader.fill(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
当小程序关闭时windows和linux会做不同的事情还是我的代码
【问题讨论】:
标签: java applet client-server