サーバーがクライアントにデータを送信し、クライアントがデータを返すサーバー/クライアントアプリケーションを作成しようとしています。しかし、何らかの理由で、データを書き込まずに非正常な切断を検出する方法を知っていないので、私はそれを動作させることができません(バッファは不必要なデータで満たされるのでデータを書き込めません)。それを行う別の方法がありますか?私はTCPを使用しています。Cでの非gracefull切断を検出する
答えて
信頼性の低いネットワーク上のTCP接続の動作について説明します。したがって、他のプロトコルを使用する必要があります。私は問題を完全に理解していない
信頼できるネットワークですが、サーバーが切断された場合は、すべてのクライアントを手動で再接続したくありません。 –
あなたはどのプロトコルを使用していますか? –
申し訳ありませんが私はあなたの答えを誤解しました。私は既にTCPを使用しています。 –
を見て、しかし、あなたはあなたのソケットがまだ接続されているかどうかを確認できます。
public bool IsSocketConnected(Socket socket) {
return !(socket.Poll(0, SelectMode.SelectRead) && socket.Available == 0) && socket.Connected;
}
ありがとうございます。これは優雅な切断のために機能します。しかし、非優雅な切断のためではありません。 (サーバーネットワークがランダムに切断されたとき) –
タイムアウト(この例のように「0」以外)を選択することは、実用的な解決策になる可能性があります。切断が偶然起こった場合、「生き残っている」側は、状態を変更するためのワードを受け取る(切断された側からそのワードが来なければならない)ことができないか、タイムアウトメカニズムが導入されています。 – kasperhj
私はキープアライブとそれを修正しました関数。
- 1. QSqlDatabase切断検出
- 2. ASP.NET MVCで非同期クライアントの切断を検出
- 3. Cでソケット切断を検出する方法
- 4. PHP - リモートホストの切断を検出する
- 5. 検出リモート切断(ハーフクローズ)Cで非同期ソケットを使用する場合、C/C++
- 6. 切断ユーザ信号で検出
- 7. オーディオデバイスの到着/切断の検出
- 8. EJBデータソースクライアントの切断の検出
- 9. ラチェットウェブソケット - 切断されたクライアントを検出
- 10. Netty:切断を検出するのに `IdleStateHandler`を使用する
- 11. Javaソケット - 入力ストリームなしでネットワーク切断を検出する
- 12. TCPソケットの切断状態を検出する方法
- 13. WCFサービスがクライアントの切断を検出する方法
- 14. Jersey ChunkedOutput - クライアントの切断を検出する方法
- 15. Android 2.1 Bluetoothオーディオの接続/切断を検出する
- 16. TCP接続の切断を検出する方法は?
- 17. winsock2の異常切断を検出する方法は?
- 18. PHPクライアントからフラッシュクライアントの切断を検出する方法は?
- 19. java httpclientサーバの切断を検出する
- 20. QGamepadManagerはubuntuでコントローラの切断を検出しません
- 21. ネットワークストリームが切断を検出する方法
- 22. 切断時にBlueToothデバイスを検出するTheTheHand.Netライブラリ
- 23. node.js httpサーバ、クライアントの切断時に検出する
- 24. AndroidはすぐにBluetoothの切断を検出します
- 25. Webサービスでのクライアントの切断の検出
- 26. ASP.NETコアでのSSEからの切断の検出
- 27. gevent内でのクライアントの切断の検出
- 28. ソケットの切断を検出していますか?
- 29. ServerSocketがクライアントの切断を検出しています
- 30. Xamarin.Androidカメラの切断を検出します。
TCPは接続停止を正常に処理するように設計されています。消滅した接続から回復するTCPの機能は機能であり、バグではありません。別の言い方をすると、通信が行われていない場合、切断されていないことです。もう一方の側がまだ生きているかどうかを知る必要があるときのこれまでの解決方法は、プロトコルに定期的なハートビートを組み込むことです。そのような操作がない場合、ゼロバイト書き込みを使用することがありますが、これは完全には信頼できません。 –