你的位置:首页 > 软件开发 > 操作系统 > Android—Socket中关闭IO流后导致Socket关闭不能再收发数据的解决办法

Android—Socket中关闭IO流后导致Socket关闭不能再收发数据的解决办法

发布时间:2016-04-22 10:00:09
以Socket发送数据为例: 发送数据时候要声明:DataOutputStream os = new DataOutputStream(socket.getOutputStream()); 最近开发遇到的为题是我要向服务 ...

以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 + "到服务器");	}

原标题:Android—Socket中关闭IO流后导致Socket关闭不能再收发数据的解决办法

关键词:Android

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录