どのように私はQtの持つmulticastgroupのためのUDPソケットを開くのですか?

StackOverflow https://stackoverflow.com/questions/1176978

  •  19-09-2019
  •  | 
  •  

質問

私はQtの&ネットワークソケットについて質問があります。私は、異なるネットワーク内に複数のIP-なアドレスは持つコンピュータを持っている場合は、どのように私は、特定のネットワーク・アダプタ/ IPアドレスのmulticastgroupのためのUDPソケットを開いてくださいます。

例:IP 192.168.2.1172.20.0.1と私は228.5.6.7ネットワークアダプタ上のマルチキャストグループ172.20.0.1からパケットを受信したソケットを作成したい。

役に立ちましたか?

解決

以下に示すように、

あなたはimr_interfaceにそれを設定する必要があります(おそらく、今INADDR_ANYに設定しています)。

struct ip_mreq mreq;
mreq.imr_multiaddr.s_addr = inet_addr("228.5.6.7");
mreq.imr_interface.s_addr = inet_addr("172.20.0.1");// <---- right here
...
QSocketDevice* sdev = new QSocketDevice(QSocketDevice::Datagram);
...
setsockopt(sdev->socket(), IPPROTO_IP, IP_ADD_MEMBERSHIP,(const char *)&mreq, sizeof(struct ip_mreq));
...

他のヒント

それは、リスニングソケットの場合は、

、あなたがリッスンする特定のIPアドレスにバインドするIPアドレスにバインドを使用することができます。 それはクライアントソケットがいた場合、OSはルーティングテーブルのルールに従ってそのIPアドレスに到達するためにそれを作成するために、右のインターフェイスを管理します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top