你的位置:首页 > 操作系统

[操作系统]Android—Socket中关闭IO流后导致Socket关闭不能再收发数据的解决办法


以Socket发送数据为例:

      发送数据时候要声明:DataOutputStream os = new DataOutputStream(socket.getOutputStream());

      最近开发遇到的为题是我要向服务端发送图片,如果os.close()的话服务器可以收到图片但是我客户端的socket会受影响关闭。如果不用os.close()的话,服务器接收图片会有影响,查资料说调用socket.shutdownOutputStream();可以关闭输出流,而且不会影响socket发送数据。

      但是问题来了:DataOutputStream关闭了,但是客户端还要继续发送数据怎样打开DataOutputStream呢?

      本人没有百度到合适的回答,所以再次发送数据的时候先判断一下输出流有没有被关闭,如果被关闭的话,就再new一个Soket。。。。(个人感觉这个方法不虽然解决了当前的问题,但不是最好的,如果大家有更好的解决方案,请留言,不胜感激!!!!)

 

public void sendObject(String obj) throws IOException {		//判断输出流是否已经关闭,如果关闭就重新new Socket		if (socket.isOutputShutdown()) {			socket = new Socket(SERVERIP, PORT);		}		DataOutputStream os = new DataOutputStream(socket.getOutputStream());		// os.write(obj.getBytes());		os.writeUTF(obj);		os.flush();		System.out.println("客户端发送" + obj + "到服务器");	}

 

 如果有好的方法,感谢留言!!!