zoukankan      html  css  js  c++  java
  • 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 + "到服务器");
    	}
    

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

  • 相关阅读:
    C++头文件,预处理详解
    在VS2013中查看C/C++预处理后的文件
    使用apache.lang包安全简洁地操作Java时间
    FileInputStream 和 FileOutputStream
    【转】彻底搞清计算结构体大小和数据对齐原则
    NDK学习笔记-gdb调试
    NDK学习笔记-gdb调试
    NDK学习笔记-多线程与生产消费模式
    NDK学习笔记-多线程与生产消费模式
    Android-Makefile
  • 原文地址:https://www.cnblogs.com/yunfang/p/5420067.html
Copyright © 2011-2022 走看看