2012-02-02 65 views
1

使用android 2.3.3,我有一個後臺服務,它有一個套接字連接。還有這是一個從不斷的套接字讀取一個主題:android socket write interrupting read

BufferedReader in = new BufferedReader(new InputStreamReader(mSock.getInputStream())); 
String line; 
while ((line = in.readLine()) != null) { 
    ... do stuff 
} 
// Socket has been closed (?) 
in.close(); 

然後在我的主線程我打電話:

private void writeSocket(String line) { 
    mSock.getOutputStream().write(line.getData("US-ASCII")); 
} 

當我打電話writeSocket,寫()不會拋出異常,但我不在另一端看不到數據,並且當write()發生時,讀線程中的in.readLine()立即返回null。從我讀的內容來看,應該可以安全地從不同的線程同時讀取和寫入相同的套接字。這似乎寫是造成套接字關閉,但我沒有得到一個例外..

回答

1

最有可能的是,連接的另一端正常關閉。這會導致readwrite終止。 (通常,沒有例外,就像試圖讀取文件的末尾一樣)。你可以同時讀寫不同的線程,如果套接字關閉,無論是正常還是異常,兩種操作都會失敗。

+1

是的,這似乎是我的問題。我正在寫錯誤的數據到導致另一端斷開連接的套接字。 – Aaron 2012-02-02 19:56:20

相關問題