Frage

Ich habe Server mit mehreren NICs, Windows Server 2003. Meine Anwendung empfängt Multicast-Pakete laufen, aber jetzt muß ich Multicast-Pakete empfangen, nur von einer einzigen Netzwerk-Schnittstelle. Ich denke, das kann helfen, aber ich habe einige Fragen.

ip_mreq   mreq;

mreq.imr_multiaddr.s_addr = multicast group address
mreq.imr_interface.s_addr=  network interface address
if (setsockopt( socet
              , IPPROTO_IP
              , IP_ADD_MEMBERSHIP
              , (const void *)&mreq
              , sizeof(mreq)) < 0)
{
   std::cerr << "setsockopt error" << std::endl;
}

Zunächst einmal, was benötige ich als Netzwerk-Schnittstelle-Adresse verwenden? Lokale Adresse der Netzwerkschnittstelle (gleiche dass ipconfig zurückkehrt), oder den Index der Netzwerkschnittstelle, die ich bekommen kann GetAdaptersAddresses api-Funktion?

Zweitens ist diese actualy möglich mit Fenstern, oder ich nur meine Zeit verbringen?

Aktualisieren Ich habe gerade gelesen, WSAJoinLeaf Funktion, und ich frage mich, dass es nicht möglich ist, nur eine NIC für Multicasts zu verwenden.

War es hilfreich?

Lösung

Erstens: Ihre Wahl. Siehe http://msdn.microsoft.com/en- us / library / ms738695 (VS.85) aspx

Zweitens: Ja, das sollte auf jeden Fall möglich sein. :)

Andere Tipps

Ja, das funktioniert, können Sie GetAdaptersInfo nur für IPv4-Schnittstellen oder GetAdaptersAddresses für Familien.

Beachten Sie, dass mreq gibt nur eine Schnittstelle mit Adresse nicht Index, der ip6_mreq und GROUP_REQ (Familie Agnostiker) Versionen bevorzugen einen Index, weil IPv6 ermöglicht es Ihnen, mehrere passende Link-Local-Adressen haben, aber an verschiedene Netzwerke angeschlossen werden.

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