2010-11-23 40 views
3

私のアプリケーションは、クライアントとしてイーサネットを介してサーバープロセスに接続します。ソケット接続のリセット

サーバーはよく知られており、変更されないように、UDPとTCPの両方が設定されている

socket(); 
setsockopt(SO_REUSEADDR); 
bind(); 
connect(); 

を使用して接続プロトコルは、両方の方法を送ったハートビートが含まれています。

接続でエラーが検出されたときなど。 listenbeatタイムアウト、私は接続をリセットする必要があります。

NULLアドレスにconnect()を実行してから少し休止してから再接続するだけで十分ですか?それとも、ソケットを閉じて最初から再初期化する必要がありますか?

おかげ

答えて

1

あなたはclose(2)ソケットに戻ってすべてをもう一度行う必要があります。なぜクライアントでbind(2)をやりますか?

+0

私は、送信元ポートとアドレスが指定されるようにbind()します。サーバーは既知のポートとアドレスからの接続のみを受け入れます。 – DanS

2

は、ソケットエラーの後には、手に1を破棄し、新しいソケットでセットアップを再起動する必要があります。

Winsock documentation、例えば:ソケット間の接続が切断され 場合

は、ソケットは は破棄され、再作成されるべきです。接続された ソケットで 問題が発生した場合、アプリケーションは を破棄し、必要なソケットを に再作成して安定したポイントに戻す必要があります。