我正在編寫一個應用程序,該應用程序由使用Netty以Java編寫的服務器和客戶端組成。Netty客戶端在一段時間後不會發送更多數據
我還沒有發現一個真正的回答這個問題,但我不知道爲什麼,如果不使用一段時間後,我的服務器 - 客戶端連接停止能夠仙數據。 「keepAlive」選項設置爲True,並且一切正常,直到客戶端有足夠的時間「斷開連接」,但服務器沒有收到斷開連接狀態。 只是一般好奇,keepAlive是乒乓客戶端/服務器,還是我必須自己做?
謝謝!
我正在編寫一個應用程序,該應用程序由使用Netty以Java編寫的服務器和客戶端組成。Netty客戶端在一段時間後不會發送更多數據
我還沒有發現一個真正的回答這個問題,但我不知道爲什麼,如果不使用一段時間後,我的服務器 - 客戶端連接停止能夠仙數據。 「keepAlive」選項設置爲True,並且一切正常,直到客戶端有足夠的時間「斷開連接」,但服務器沒有收到斷開連接狀態。 只是一般好奇,keepAlive是乒乓客戶端/服務器,還是我必須自己做?
謝謝!
的事情,值得看看是如果有一些網絡設備,如防火牆,可能已經關閉的連接,記住,是不是在協議的連接狀態處理。所以很可能你有一個half closed connection。
如果您確實設置了keepAlive
選項,請確保它通過電線執行那些ping
。最好的辦法是檢查連接的兩端是否仍然打開。
當連接處於活着,但空閒(客戶端不接收數據),檢查連接的狀態爲ESTABLISHED
。並在服務器端做同樣的事情。從那裏用Wireshark
和trace
等工具嘗試確定連接是否在服務器上丟失或被防火牆殺死。
好的,謝謝,我會馬上測試! –
測試了一下,看起來好像沒有斷開連接,數據流在一段時間後就停止工作了......對於如何進一步測試,你有什麼建議嗎? –
你應該提供更多的像網狀版本,如果可能的話,你用它來建立你的客戶端和服務器(Bootstrap與管道)的代碼信息。 –
這幾乎是一個帶有管道的客戶端 - 服務器引導的正常設置,其選項爲「keepAlive」和「tcpNoDelay」。應用程序工作得很好,但實際上在它們之間發送消息,但是當您不使用客戶端一段時間時,它不會將消息「刷新」到服務器中。 –