2016-11-02 3 views
0

私はJavaとNettyを使用して、TCP/IP接続を介してUnity-Clientに接続しています。接続損失を検出するのに十分な書き込みですか?

接続が途切れることがあり、Unity-guyが5秒ごとにping(1バイトメッセージ)を送信するように提案し、最後のpingの受信時間が30秒を超えると、接続が失われます。

本当に時間を測定する必要はありますか?ソケットを通して何かを送信しようとすると例外が発生するのではないでしょうか?書き込みが接続損失を検出しない場合がありますか?

私はそれを使用しているのでNettyのタグを付けましたが、単純なソケット接続ではおそらく同じです。

+1

いいえ、それだけでは不十分です。 TCPは両端でバッファリングを行います。つまり、特定の書き込みはまったく失敗しません。失敗するのはそれ以降の書き込みです。 – EJP

答えて

0

本当の答えは、アプリケーションをどのように動作させるかを自分で定義する必要があるということです。

私の言うことは、接続に発生する可能性のあるさまざまな問題があることです。データが書き込まれていて、それがうまくいかないときに直ちに失敗するのは、の1つで、それを処理するための1つのオプションです。

また、連続してpingを行うこともできます。例えば、他のものがちょうど「一時的に」利用できないときを検出することができる。言い換えれば、ある種の「ハートビート」監視を確立します。潜在的な "反応"の "より広い範囲"のためにアプリケーションを有効にします。

関連する問題