Domanda

Ho una domanda su Qt e presa di rete. Se ho un computer con più IP-Indirizzi appartenenti a reti diverse, come posso aprire un socket UDP per un multicastgroup su una specifica rete adattatore / indirizzo ip.

es:. 192.168.2.1 IP e 172.20.0.1 e voglio creare un socket che riceve i pacchetti dal 228.5.6.7 gruppo multicast sulla scheda di rete 172.20.0.1

È stato utile?

Soluzione

È necessario impostare che nel imr_interface come illustrato di seguito: (probabilmente è impostato per INADDR_ANY ora)

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));
...

Altri suggerimenti

Se si tratta di un socket in ascolto, è possibile utilizzare legarsi a indirizzo IP per associarlo a un indirizzo IP specifico per l'ascolto su. Se si tratta di un socket client, il sistema operativo gestire l'interfaccia giusta per creare su per raggiungere tale indirizzo IP come da regolamento della tabella di routing.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top