1

Windows Server 2003 を実行している複数の NIC を備えたサーバーがあります。アプリケーションはマルチキャスト パケットを受信しますが、1 つのネットワーク インターフェイスからのみマルチキャスト パケットを受信する必要があります。参考になると思いますが、いくつか質問があります。

ip_mreq   mreq;

mreq.imr_multiaddr.s_addr = multicast group address
mreq.imr_interface.s_addr=  network interface address
if (setsockopt( socet
              , IPPROTO_IP
              , IP_ADD_MEMBERSHIP
              , (const void *)&mreq
              , sizeof(mreq)) < 0)
{
   std::cerr << "setsockopt error" << std::endl;
}

まず、ネットワーク インターフェイス アドレスとして何を使用する必要がありますか? GetAdaptersAddresses api 関数を使用して取得できるネットワーク インターフェイスのローカル アドレス (ipconfig が返すものと同じ)、またはネットワーク インターフェイスのインデックスは?

第二に、これは実際にウィンドウで可能ですか、それとも時間を費やすだけですか?

更新 WSAJoinLeaf 関数について読みましたが、マルチキャストに NIC を 1 つだけ使用することはできないのではないかと思います。

4

2 に答える 2

1

最初:あなたの選択。http://msdn.microsoft.com/en-us/library/ms738695(VS.85).aspxを参照してください。

2番目: はい、これは間違いなく可能です。:)

于 2009-04-09T01:53:28.693 に答える
0

はい、これは機能します。IPv4のみのインターフェイスにGetAdaptersInfoを使用するか、両方のファミリにGetAdaptersAddressesを使用できます。

mreq は、インデックスではなくアドレスによってのみインターフェイスを指定することに注意してください。ip6_mreq およびGROUP_REQ (ファミリーに依存しない) バージョンでは、インデックスが優先されます。これは、IPv6 では複数の一致するリンクローカル アドレスを持つことができるが、異なるネットワークに接続できるためです。

于 2010-02-06T05:18:04.410 に答える