1

私は、すべての新しい接続を処理するために子プロセスをフォークするTCP並行サーバーを作成しています。サーバーが同じポートでリッスンしているときに、ClientAがChildAと対話しているとします。たとえばSIGINTシグナルでサーバーを強制終了した場合、 ClientAChildAは相互作用を続けます。

したがって、そのような状況でサーバーを再起動すると、明らかに関数呼び出しがスローAddress already in useされます。bind

この問題に対して考えられるすべての解決策は何ですか?また、通常はどれが実行されますか?

4

2 に答える 2

2

2つのオプション。

  1. kill ChildAは、サーバーが強制終了されたときに処理します。

  2. close行われるとすぐにChildAで/にfd使用されます。listenbindfork

于 2013-02-19T03:16:15.153 に答える
1

SO_REUSEADDRバインドする前に、リスニングソケットでソケットオプションを設定します。

于 2013-02-19T03:16:03.877 に答える