多线程的服务器程序 线程中等待客户端的消息 部分代码如下:
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; //如果抛出了异常,那么就是断开连接了 跳出无限循环
}