0

TCP クライアント/サーバーがあり、クライアント側で接続損失を検出したい。私のクライアントには複数のインターフェースがあり、一度にそのうちの1つでサーバーに接続したため、クライアント側で接続損失を検出して、tcpクライアントを別のインターフェースでサーバーに接続できるようにする方法を知りたいです。データをテキスト ファイルに保存します。私はそれをグーグルで検索しましたが、すでに生きているのを見ましたが、それは私が望むものではありません。

重要な場合、私のプロジェクトは Linux にあり、コードは C++ にあります。

4

3 に答える 3

1

私が見つけた最善の方法は、バッファをチェックすることです。バッファが空の場合、TCP クライアントがパケットを TCP サーバーに正常に送信し、次のパケットを送信できることを意味します。使用できるバッファをチェックするためにSIOCOUTQ; 非常に使いやすく、バッファにどれだけのデータがあるかを示します。

于 2013-04-24T08:45:54.287 に答える
1

TCP 接続は、エラーを修正するように設計されており、タイム クリティカルではありません。このエラー修正には、ネットワーク タイムアウトが含まれます。

ソケットが実際に閉じられるまで、読み取りと書き込みは失敗しません。

接続がタイムアウトしたかどうかをクライアントが判断する唯一の方法は、指定された時間内にメッセージを受信して​​いないことをクライアントが検出し、手動でソケットを閉じることです。

それが Keep Alive メッセージの目的です。

于 2013-04-22T13:15:03.467 に答える