私は自分自身を狂わせています。
Microsoft は、コンストラクターを使用して新しい TCPClient のローカル ネットワーク アダプターとポートをバインドする素晴らしい方法を提供しています。
TcpClient newClient = new TcpClient(IPEndPoint localEP);
IPv4 または IPv6 のいずれかの一般的な remoteEndPoint が与えられ、可能性のある localEP が多数あると仮定すると、呼び出す前にどの localEP にバインドするかを決定する賢明な方法はないようです。
TcpClient.Connect(IPEndPoint remoteEP)
.net はパラメーターなしの TcpClient コンストラクターを提供します。これは、.Connect を呼び出すときに最適な localEP を自動的に決定しますが、残念ながら IPv6 ターゲットをサポートしていません。
私が最初に考えたのは、IP ルーティング テーブルにアクセスして、どのアダプターを使用するかを自分で考えることでしたが、.net もその機能を提供していないようです。
GetBestInterface() への P.Invoke を含むソリューションを見つけましたが、残念ながら Mono にデプロイできるようにする必要があるため、マネージド ソリューションが本当に必要です。
私の質問/問題は次のとおりです: 既知の remoteEP と既知のすべての localEP のリストが与えられた場合、tcpClient をインスタンス化するときに正しい localEP を正しく選択して、接続方法が成功するようにするにはどうすればよいですか。