Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android—Socket中關閉IO流後導致Socket關閉不能再收發數據的解決辦法,androidio

Android—Socket中關閉IO流後導致Socket關閉不能再收發數據的解決辦法,androidio

編輯:關於android開發

Android—Socket中關閉IO流後導致Socket關閉不能再收發數據的解決辦法,androidio


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

 

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

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved