Client端的Socket都已经关闭了,为什么服务器端的ServerSocket不报错误?clientSocket 和 serverSocket建立连接,serverSocket等待clientSocket发送数据
在等待的过程中,把client端的计算机网线拔掉断开连接
可是serverSocket还在等待之前和clientSocket建立的连接发送数据.为什么没有自动断开或报异常?
在等待的过程中,把client端的计算机网线拔掉断开连接
可是serverSocket还在等待之前和clientSocket建立的连接发送数据.为什么没有自动断开或报异常?
另一端调用close()才会产生exception
服务器A代码:
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
try
{
ServerSocket socketServer = new ServerSocket(9999);
Socket socke = socketServer.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(socke.getInputStream()));
while(true)
{
char[] type=new char[1];
String line=null;
in.read(type);
line=in.readLine();
System.out.println(String.valueOf(type) + " : " + line);
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}客户端机器B代码:
import java.io.*;
import java.net.*;public class TestClient { public static void main(String[] args) {
try
{
Socket socket = new Socket("192.168.0.31",9999);
PrintWriter writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
writer.println("Allllllll");
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
"少了个客户照样可以运行是没有错的"这样是可以,但是我想用最快的速度知道哪个客户已经断开连接了(非正常socket close)
谢谢yeqiufeng(叶秋枫) 还有大家