Client端的Socket都已经关闭了,为什么服务器端的ServerSocket不报错误?clientSocket 和  serverSocket建立连接,serverSocket等待clientSocket发送数据
在等待的过程中,把client端的计算机网线拔掉断开连接
可是serverSocket还在等待之前和clientSocket建立的连接发送数据.为什么没有自动断开或报异常?

解决方案 »

  1.   

    如果是同步read数据
    另一端调用close()才会产生exception
      

  2.   

    那如何办?
    服务器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();
    }
    }
    }
      

  3.   

    haisenmai(我应该做得到) 
      "少了个客户照样可以运行是没有错的"这样是可以,但是我想用最快的速度知道哪个客户已经断开连接了(非正常socket close)
      

  4.   

    “心跳包” 好生动:)是不是多加个socket连接来测试连接? 我不想在原来的socket连接上多做事情
      

  5.   

    我们是无线网络,所以可能要等久点. 麻烦:( 
    谢谢yeqiufeng(叶秋枫) 还有大家