2011-05-19 59 views
1

在我的應用程序中,我使用套接字讀/寫操作進行服務器通信。當服務器關閉時,套接字寫入操作僅在第二次拋出異常「管道中斷」。第一次寫入操作不會引發任何異常。任何人都可以告訴我原因。Android Socket寫操作

代碼我用這個,寫操作

public void write(byte[] buffer) {   
    try { 
     mmOutStream.write(buffer); 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

在此先感謝

 SocketAddress sockaddr = new InetSocketAddress(SERVERIP, 8080); 
     Socket nsocket = new Socket(); 
     nsocket.setSoTimeout(3000); 
     nsocket.connect(sockaddr, 5000); 
     if (nsocket.isConnected()) 
      { 
      mmInStream = nsocket.getInputStream(); 
      mmOutStream = nsocket.getOutputStream(); 
      } 

代碼...

回答

0

只有一個破裂的管道失誤的原因。您已寫入已由另一端關閉的連接。這本身就是一個應用程序協議錯誤,它可能是由於此前的應用程序協議錯誤導致的,導致對等方以惱人的方式關閉連接。

+0

拋出異常,因爲我已經停止了服務器。我的實際問題是,在服務器關閉後,我第一次執行寫入操作時不會拋出異常。但它會在下次嘗試寫入時拋出異常。 – upv 2011-05-19 11:09:21

+0

@Unnnikrishnan PV基本上是由於緩衝。你無能爲力。您無法立即檢測到TCP中的連接失敗,它總是需要幾秒鐘的時間。 – EJP 2011-05-19 23:48:28

+0

@downvoter(s)請解釋。上面沒有錯誤。如果您不同意請說明原因。 – EJP 2011-08-11 23:25:33