1

TCP ソケットに継続的に書き込むプログラムがあります。クライアントとサーバー間の接続が一定時間切断された場合でも、接続を再確立できるようにしたいと考えています。

現在、ワイヤを切断できます。write() 関数がループしている間、「接続がピアによってリセットされました」というエラーが 1 つ返され、次に ULLONG_MAX の値が返されます。次に、ワイヤを再接続すると、write() は継続的に「壊れたパイプ」エラーを返します。接続を閉じてから再度開いてみましたが、「接続がピアによってリセットされました」というエラーが引き続き発生します。

そもそも接続を再確立する方法、または一定時間 (または無期限に) 接続を維持する方法を知っている人はいますか?

4

2 に答える 2

4

ここでファイル記述子を再利用することはできません。最初からやり直す必要があります。新しく作成socket(2)して呼び出す必要connect(2)があります。

于 2012-05-04T14:58:16.727 に答える
1

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

何らかの理由で TCP が唯一の選択肢ではない場合は、接続がいつ失われるかを決定する部分があなたに任されているため、UDP 通信について考える必要があるかもしれません。ただし、他の多くの考えに対処する必要があります (ただし、失われた通信と回復する通信を目指しているため、それが必要になる場合があります)。

于 2012-05-04T14:47:33.763 に答える