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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top