2013-06-04 22 views
2

我正在編寫一個應用程序,該應用程序由使用Netty以Java編寫的服務器和客戶端組成。Netty客戶端在一段時間後不會發送更多數據

我還沒有發現一個真正的回答這個問題,但我不知道爲什麼,如果不使用一段時間後,我的服務器 - 客戶端連接停止能夠仙數據。 「keepAlive」選項設置爲True,並且一切正常,直到客戶端有足夠的時間「斷開連接」,但服務器沒有收到斷開連接狀態。 只是一般好奇,keepAlive是乒乓客戶端/服務器,還是我必須自己做?

謝謝!

+0

你應該提供更多的像網狀版本,如果可能的話,你用它來建立你的客戶端和服務器(Bootstrap與管道)的代碼信息。 –

+0

這幾乎是一個帶有管道的客戶端 - 服務器引導的正常設置,其選項爲「keepAlive」和「tcpNoDelay」。應用程序工作得很好,但實際上在它們之間發送消息,但是當您不使用客戶端一段時間時,它不會將消息「刷新」到服務器中。 –

回答

0

的事情,值得看看是如果有一些網絡設備,如防火牆,可能已經關閉的連接,記住,是不是在協議的連接狀態處理。所以很可能你有一個half closed connection

如果您確實設置了keepAlive選項,請確保它通過電線執行那些ping。最好的辦法是檢查連接的兩端是否仍然打開。

當連接處於活着,但空閒(客戶端不接收數據),檢查連接的狀態爲ESTABLISHED。並在服務器端做同樣的事情。從那裏用Wiresharktrace等工具嘗試確定連接是否在服務器上丟失或被防火牆殺死。

+0

好的,謝謝,我會馬上測試! –

+0

測試了一下,看起來好像沒有斷開連接,數據流在一段時間後就停止工作了......對於如何進一步測試,你有什麼建議嗎? –