TCP ソケット経由でリモート サーバーと通信するクライアントを構築しています。場合によっては、クライアントがサーバーにメッセージを渡したり、サーバーがクライアントにメッセージを渡したりします。
これはラップトップで実行されるため、接続はかなり不安定になります. Wi-Fi が失われる可能性があり、ラップトップをスリープ状態にして後でウェイクアップする可能性があります。接続の切断を検出するためにピンポン システムを実装しています (すべて同じソケット上で、クライアント ping、サーバー ポン)。 .
ping が失敗した場合はどうすればよいですか? (または、クライアントが確認応答されないメッセージを送信した場合) 次のいずれかを実行できます。
- ping が返ってくるまで ping し続けます
- ソケットを閉じ、接続が成功するまでソケットの接続を繰り返し試行します
オプション 1 は明らかに少し単純ですが、それで希望する動作が得られるかどうかはわかりません。サーバーが接続の側を閉じた場合はどうなりますか? また、たとえば、ラップトップに Wi-Fi 接続がない場合、これらの ping はすべてキューに入れられ、Wi-Fi が回復したときにまとめて送信されますか? 誰かが再接続するたびに、何千もの ping でサーバーを攻撃したいかどうかわかりません。
クライアントは Flash で記述されているため、KEEP_ALIVE などのオプションへの低レベル アクセスは多くありません。