いくつかの基本的な質問があります:
1. ソケットは、プロトコル、ローカル IP、ローカル ポート、リモート IP、およびリモート ポートで表されます。このような接続がクライアントとサーバーの間に存在するとします。別のクライアントを同じローカル ポートと ipにバインドすると、バインドされましたが ( SO_REUSEADDRを使用しました)、2 番目のクライアントによる同じリモート ip とポートへの接続操作が失敗しました。したがって、3 番目のプロセスが同じソケットを共有できる方法はありません。 ?
2.ローカルポートとIPにバインドされたソケットでlisten()を呼び出すと、接続をリッスンします。クライアントが接続すると、ソケット (たとえば A) が作成されます。3 ウェイ ハンドシェイクを完了し、別のソケット (たとえば B) を開始し、ソケット A (ソース) も削除します。新しいクライアントは、新しいソケット B によって処理されます。リモートIPとポートは何ですか?ソケットAはそのソケットとは異なりますか、それともリスニングソケットフォームAにリモートIPとポートを追加するだけですか?
3.そのポートとIPでリッスンするソケットがなく、そのポートとIPのすべてのソケットにSO_REUSEADDRオプションが設定されている場合、SO_REUSEADDRはポートでリッスンソケットを確立できることを読みました。クライアントがポートと IP にバインドされている場合、最初のクライアントが connect() を正常に呼び出さない限り、別のクライアントは (SO_REUSEADDR が使用されていても) それにバインドできません。この例では、そのポートと ip にはリッスン ソケットがありませんでした (これはクライアントであるため、connect() の呼び出しはありません) 。では、なぜ別のクライアントが許可されないのでしょうか?
前もって感謝します。