星空网 > 软件开发 > 操作系统

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

 

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

 




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

关键词:Android

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

tiktok做电商:https://www.goluckyvip.com/tag/84082.html
tiktok国际版专线:https://www.goluckyvip.com/tag/84083.html
tiktok国际版正版:https://www.goluckyvip.com/tag/84084.html
tiktok法国版:https://www.goluckyvip.com/tag/84085.html
tiktok国际版免登陆:https://www.goluckyvip.com/tag/84086.html
tiktok快手国际版:https://www.goluckyvip.com/tag/84087.html
独家丨B站广告位可跳转美团APP B站为电商平台引流再升级 :https://www.kjdsnews.com/a/1836410.html
百崖大峡谷生态旅游景区(探秘中国西南自然风光):https://www.vstour.cn/a/363176.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流