码迷,mamicode.com
首页 > 编程语言 > 详细

Java Socket 死循环while如何判断客户端断开

时间:2018-04-06 12:35:40      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:问题   nbsp   red   print   buffered   gen   bool   div   gpo   

 

多线程的服务器程序 线程中等待客户端的消息 部分代码如下:
  
    boolean done=clientRequest.isConnected();//判断客户端Socket是否连接
    
    while(done)//客户端是连接的
    {
         try 
{
    input = clientRequest.getInputStream();
    Binput = new BufferedInputStream(input);
    str = "" + Binput.read();
             if(Binput.read()!= -1)//如果客户端有消息就打印出来
   {
System.out.println(str);
             }

          }
          catch (IOException e)
{
    e.printStackTrace();
}
 
         if(clientRequest.isclosed())//判断Socket是否关闭
{
   done=false;//如果关闭,就跳出无限循环(while)
}
    }

    我的代码能实现服务器与客户端的通信
    问题是: 当客户端中断或退出  以上代码却不能判断Socket中断 跳不出while的无限循环

 

解决方法:

1.  while(Binput.read()!= -1)  这种方法 能判断出客户端输入是否为空  客户端断开 能跳出死循环
                                   
2. 用下面的方法就没问题了  在死循环中加入以下代码 
try { 
socket.sendUrgentData(0); 
} catch (IOException e) { 
     done= false;    //如果抛出了异常,那么就是断开连接了  跳出无限循环

Java Socket 死循环while如何判断客户端断开

标签:问题   nbsp   red   print   buffered   gen   bool   div   gpo   

原文地址:https://www.cnblogs.com/xiaobo-Linux/p/8726916.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!