以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
(#换成@)。