2 つのソケット (1 つの TCP と 1 つの UDP) をバインドし、両方が同じ一時ポートを持つことを保証する単純な (非反復的な) 方法はありますか?
最初はTCP経由で接続されている単純なサーバーがありますが、UDP経由でも送信されます。サーバーがクライアントのUDPエフェメラルポートを検出するためだけに、クライアントから接続後にUDPパケットを送信したくありません。必要がない限り、最初の TCP 接続メッセージを介してポート番号を送信したくありません。
現在、TCP ソケットの getsockname の後にクライアント UDP ソケットのポートを明示的にバインドして、OS が割り当てた一時ポートを検出します。まだ壊れていませんが、もろい感じです。
編集: 明確にするために、現在の実装では、オペレーティング システムが UDP ソケットによって既に使用されている TCP ソケットに一時的なポートを割り当てないことを前提としています。