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

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM