如何打开使用Qt一个multicastgroup的UDP套接字?
-
19-09-2019 - |
题
我有一个关于Qt&网络套接字问题。如果我有多个IP-不会忽略在不同网络中的计算机,我怎么打开一个UDP套接字用于在特定的网络适配器/ IP地址一个multicastgroup。
例如:IP 192.168.2.1
和172.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地址上侦听。 如果它是一个客户端套接字,操作系统管理权的界面来创建它到达该IP地址按照路由表中的规则。
不隶属于 StackOverflow