这种情况是要由服务器来处理的,不然如果你的client端
的网络突然断了,服务器的read一样会有问题的。

解决方案 »

  1.   

    to zfluo,那服务器该如何处理呢?它如何知道Applet关闭了连接?
    我在Applet的destroy()中关闭的客户端连接,不过这样好像没什么作用?
      

  2.   

    “接着再进入Applet这页时,Applet这页的socket连接就也有问题了”
    什么问题?Applet重新连服务器,服务器开新线程处理应该没问题吧。出错的线程停掉。
      

  3.   

    你可以定义一个字段,当接收到这个字段就退出
    也可以定义二进制字段(总之你要确定不会和通信信息冲突就行)
    给你个例子:
    String str;
    DIS=new DataInputStream(socket.getInputStream());//输入流 
    PS=new PrintStream(socket.getOutputStream()); //输出流
    DataInputStream in=new DataInputStream(System.in); //键盘输入流
    ……//socket已连接
    str=DIS.readLine(); //读入从对端传来的字符串 
    …… 
    if(str.trim().equals("BYE"))break; //如果对端来的信息是"BYE",就退出 
    …… 
    str=in.readLine(); //读取用户键盘输入的字符串
    if(str.trim().equals("BYE"))break; //如果是"BYE",就退出
    ……
    具体处理,就看你自个的需要了
      

  4.   

    btw:上面那段处理代码,是放在一个while(true){}循环里面的……
      

  5.   

    btw:上面那段处理代码,是放在一个while(true){}循环里面的……
      

  6.   

    服务器端会设置超时,如果超时了的话,具体的处理有
    很多,根据你自己的需要来选择,如果你学过C的话,
    可以参考一下《unix网络编程》这本书,里面有很详细
    的解释。