java socket判断客户端是否断开连接

ServerSocket serverSocket = new ServerSocket(9952);
Socket socket = serverSocket.accept();
int k=-1;
我发现接收数据时不能用
while(socket.isConnected()){
fileOutputStream.write(inputStream.read());
}
我在客户端即使断开连接,socket.isConnected()依然是true。
应该用
while((k=inputStream.read())!=-1){
fileOutputStream.write(k);
}
当客户端断开时,k=-1,那就是说inputStream.read()其实也是阻塞的,如果inputstream没有断开,它会阻塞直到有数据为止。
socket如果需要同时写入写出,则需要为input和output各开一个线程

你可能感兴趣的:(java,socket)