2012-05-04 24 views
1

TCPソケットに連続的に書き込むプログラムがあります。私は、クライアントとサーバーの間の接続が何らかの時間切断された場合、接続を再確立できることを確認したい。ハードウェア切断後のTCPリカバリ接続

今のところ、私はワイヤを切断することができ、write()関数がループする間に、1つの「接続でリセットされた接続」エラーを返し、ULLONG_MAXの値を返します。次に、ワイヤを再接続すると、write()は "broken pipe"エラーを継続的に返します。接続を閉じて再開しようとしましたが、引き続き「ピアで接続がリセットされました」というエラーが表示されます。

どのように私は接続を再設定するか、それを最初の場所で一定の時間(または無限に)生き続けることができますか?

答えて

1

新しい接続を確立する必要がありますが、それはクライアントプログラムによってのみ開始できます。 IPアドレスを確認したり、最初の接続でトークンを交換したりするために、同じクライアントを再接続する何らかの方法が必要な場合があります。そのため、最初の接続と回復のために接続で異なる種類の開始を行うことができます。しかし、その解決方法はあなたのアカウント上でプログラミングを必要とします。

TCPが何らかの理由で唯一の選択肢ではない場合、接続が失われたと判断した部分が残っているため、UDP通信について考えてみてください。君は。しかし、あなたは他の多くの考えを世話する必要があります(しかし、あなたが失われたコミュニケーションを救うことを目指しているので、それはあなたのニーズによります)。

3

ここでファイルディスクリプタを再利用することはできません。最初からやり直す必要があります。新しいsocket(2)を作成し、connect(2)を呼び出してください。

関連する問題