在开发tcp客户端时,写了一个线程,接收服务器端传来的消息,代码如下
while (isFlag()) {
byte[] b = new byte[128];
int temp = 0;
int len = 0;
try {
is = cilent.getInputStream();// 接收tcp服务器端的输入流
if (is != null) {
System.out.println(11111);
is.read(b);
System.out.println(2222);
String str = new String(b, "GB2312");
Message msg=new Message();
msg.obj=str;
msg.what=StaticInfo.TCPCLIENTRECEIVE;
uiHandler.sendMessage(msg);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("e-------------"+e);
}
}
由于客户端开了该线程一直在等待接收服务器端的小时,所以代码可以运行到上面的 System.out.println(11111); is.read(b);处,但这时如果服务器关闭,,其将一直不间断地循环下去,请问如何判断服务器已经关闭了?
设置超时######小弟菜鸟######麻烦能否具体一点呢?######服务器关闭, 抛出来的异常肯定是不一样的.######刚解决了问题了,服务器关闭后,is.read()方法返回-1######刚好做完这个内容,len = is.read(b); len = -1的时候就是服务器退出的时候######哈哈,谢啦,刚才已经解决了,就是这么解决了!纠结了好久!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。