2014-01-14 33 views
1

我正在開發和android應用程序,通過套接字與服務器進行通信。我有一個線程讀取套接字,而主線程執行Asynk Task,它通過相同的套接字發送消息。這裏的問題是,有些時候(比如說50%的次數)我稱之爲套接字連接的OutputStream.write()方法,服務器日誌顯示客戶端關閉了連接。我讀到java套接字是全雙工的,這應該允許我通過相同的套接字發送和接收消息而沒有任何問題。那麼,爲什麼會發生這種情況?應用程序是否存在問題?或者它是服務器端代碼(我沒有訪問)關閉連接的那個?爲什麼OutputStream.write()關閉套接字連接?

編輯:服務器是一個raspberry分佈,運行只有一個java應用程序是一個與我的應用程序通信的樹莓派。我無法訪問運行在服務器上的Java代碼或服務器顯示的任何日誌,我只能訪問連接到服務器的屏幕,該屏幕會打印代碼「告訴」它打印的消息。當我執行OutputStram.Write()時,服務器在屏幕上顯示:「連接到客戶端關閉」。

非常感謝!

+1

你有什麼異常?它應該在你的Android日誌中。 – Gray

+0

我懷疑服務器已關閉連接。 – Gray

+0

「服務器日誌顯示客戶端已關閉連接」:不,它不。 *顯示*我們日誌真正包含的內容。 – EJP

回答

3

爲什麼OutputStream.write()關閉套接字連接?

它沒有。它把數據寫入一個OutputStream.

某些時候(可以說的時候50%),我稱之爲套接字連接的OutputStream.write()方法,服務器日誌顯示客戶端關閉連接。

不,它不。這是它真正顯示的內容:

當我執行OutputStram.Write()時,服務器在屏幕上顯示:「Connection to client closed」。

此說,服務器關閉了連接客戶端。不是相反。

也許你發送了一些無效的和服務器barfed。

+0

我實際發送的是服務器操作並保存在數據庫上的字符串。讓我再次檢查服務器管理員。 – CarlosT

相關問題