以Socket發送數據為例: 發送數據時候要聲明:DataOutputStream os = new DataOutputStream(socket.getOutputStream()); 最近開發遇到的為題是我要向服務端發送圖片,如果os.close()的話伺服器可以收到圖片但是我客戶端的sock ...
以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 + "到伺服器");
}
如果有好的方法,感謝留言!!!