Wie öffne ich einen udp-socket für eine multicastgroup mit Qt?
-
19-09-2019 - |
Frage
Ich habe eine Frage zu Qt - & Netzwerk-sockets.Wenn ich einen computer mit mehreren IP-Adressen in unterschiedlichen Netzen, wie Eröffne ich einen udp-socket für eine multicastgroup auf einem bestimmten Netzwerk-adapter - /ip-Adresse.
zB:ip 192.168.2.1
und 172.20.0.1
und ich will einen socket zu erstellen, die Sie empfängt Pakete von der multicast-Gruppe 228.5.6.7
auf der 172.20.0.1
Netzwerk-adapter.
Lösung
Sie sollten festlegen, dass in imr_interface
wie unten gezeigt:(wahrscheinlich ist es eingestellt INADDR_ANY
jetzt)
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));
...
Andere Tipps
Wenn es ein Abhörsocket ist, können Sie binden an die IP-Adresse verwenden, um eine bestimmte IP-Adresse zu binden, auf zu hören. Wenn es dich um einen Client-Socket ist, verwaltet das Betriebssystem die richtige Schnittstelle, es zu schaffen auf diese IP-Adresse zu erreichen als pro-Routing-Tabelle Regeln.