socket关闭异常

lonuery 发布于 2013/01/07 09:43
阅读 1K+
收藏 0

为什么我关闭数据输出和输入流的时候,下次再创建数据输出和输入流的时候socket会报出is closed 的异常 但是我调试的时候 所获取的socket的属性:isClosed=false 那就证明了其未关闭,实在弄不清楚其中的原因,求解答!

public void run(){
		while(isStop==false){		
			try{
				byte[] buf = ms_tsc_HB();
				DataOutputStream out = new       DataOutputStream(login_mode.getSocket().getOutputStream());
				out.write(buf);
				out.flush();	
				
				DataInputStream input = new DataInputStream(login_mode.getSocket().getInputStream());
				byte[] buffer = new byte[22];
				input.read(buffer, 0, 22);
				byte[] str = new byte[4];
				if(buffer!=null){
					str[0]=buffer[7];
					str[1]=buffer[6];
					str[2]=buffer[5];
					str[3]=buffer[4];
				}		
				int resultHead = ((((str[0] & 0xff) << 8 | (str[1] & 0xff)) << 8) | (str[2] & 0xff)) << 8
						    | (str[3] & 0xff);
				if(resultHead==(Integer)0x8000000F){
					Log.i("HB", "连接保持");
				}else{
					Log.i("HB", "连接可能已经断开!");	
					num++;
					if(num>5){
						Log.i("HB", "连接已断开!");
						Socket socket = new Socket("192.168.1.121",12050);
						login_mode.setSocket(socket);
					}
				}
 //				input.close();//将这两行注释掉就没问题
//				out.close();
			}catch (IOException e1) {
				e1.printStackTrace();
			}
			try{
				Thread.sleep(2000);
			} catch (InterruptedException e){
				e.printStackTrace();
			}
		}
	}

加载中
0
陈舵主
陈舵主
不懂java,不过还是要仔细分析下tcp协议,netstat看看端口状态
0
nubo
nubo
socket是基于底层操作系统平台
http://blogger.org.cn/blog/more.asp?name=seanno13&id=42249
顺带说一句,一个健壮的程序不应该依赖某个不确定属性来维持运转。
0
实易小编
因为你的服务器端,也就是192.168.1.121中的socket关闭
0
lonuery
lonuery

引用来自“nubo”的答案

socket是基于底层操作系统平台
http://blogger.org.cn/blog/more.asp?name=seanno13&id=42249
顺带说一句,一个健壮的程序不应该依赖某个不确定属性来维持运转。
非常感谢!
返回顶部
顶部