recvfrom()UDPパケット(Microsoft)を受信したインターフェイスのIPを取得する

MicrosoftマルチホームPCのINADDR_ANYにバインドされたソケットでrecvfrom()を使用する。 recvfrom()がUDPパケットを取得したとき、パケットを受け取ったインタフェース(IP)を見つけるにはどうすればいいですか?

0
追加された 編集された
ビュー: 4
マイクロソフトのPC?それはかなり幅広い可能性がありますが、私はWindowsを前提としていますが、それでもなお、どのバージョンですか? Win 3.11とWin 7は少し異なります。また、何を試しましたか?あなたはどんな結果を期待しましたか?代わりに何を得ましたか?
追加された 著者 Piskvor,
私は元のポストを編集することができない何らかの理由で - Win2000からrecvfrom()を使用して(私はWSARecvMsg()を使用することはできません)Win7にこれまで何も見つかりませんでした
追加された 著者 user664239,

1 答え

単一のリスニングソケットが複数のIPにバインドされている場合、受信IPを知る方法はありません。単一のソケットを INADDR_ANY にバインドする代わりに、 GetAdaptersInfo()および/または GetAdapterAddresses()を使用してマシンのローカルIPリストを照会することができます。各IP用に個別のリスニングソケットを作成します。指定されたソケットがどのIPにバインドされているかを知るには、 getsockname()を使用できます。ただし、そのソケットが複数のIPではなく特定のIPにバインドされている場合に限ります。

0
追加された