HTTP サーバーとして機能するサードパーティ ライブラリがあります。アドレスとポートを渡すと、受信接続をリッスンするために使用されます。このライブラリは、バインド先のポートとアドレスを排他的に使用しないようにリッスンします。その結果、同じポートで複数回リッスンできます。
この HTTP サーバーの複数のインスタンスを同じプロセスで実行する必要があります。各インスタンスには既定のポートがありますが、そのポートが使用できない場合は、次に使用可能なポートを使用する必要があります。これが私の問題です。同じポートでリッスンする 2 つの HTTP サーバーで終わる可能性があります。
HTTP サーバーのコードを変更することはできず、指定したポートをリッスンできない場合、HTTP サーバーは警告を発しません。そのため、各 HTTP サーバーを起動する前に、ポートが既に使用されているかどうかを確認できる必要があります。SO_REUSEADDR を FALSE に設定し、SO_EXCLUSIVEADDRUSE を TRUE に設定して独自のソケットをバインドすることにより、ポートが既にリッスンされているかどうかを確認しようとしましたが、既存の HTTP サーバーが既にそのポートでリッスンしている場合、バインド呼び出しとリッスン呼び出しの両方が成功します。
この HTTP サーバーはどのようにこの効果を達成していますか? また、ポートがこの方法でリッスンされているかどうかを正確に確認するにはどうすればよいですか?