Frage

Vielleicht dies die Lösung ist sehr einfach und ich bin einfach zu dumm, es zu sehen. Ich brauche eine alte Anwendung mit Indy 10 neu zu kompilieren und es gibt diese Zeile, dass

verwendet werden soll
inUDPServer.Binding.SetSockOpt(Id_IPPROTO_IP, Id_IP_ADD_MEMBERSHIP, PChar(@mreq), SizeOf(mreq));

aber die neue TIdSocketHandle.SetSockOpt dauert 3 ganze Zahlen. Nun, wie soll ich das ip_mreq bieten? Gerade vorbei an den imr_multiaddr.S_addr führt zu einer # 10014 Fehler - Puffer Fehler. Vielleicht einer von euch eine Idee hat.

Prost Andy

War es hilfreich?

Lösung

Verwenden Sie die TIdSocketHandle.AddMulticastMembership() Methode statt (wenn Ihre Version von Indy 10 nicht, dass die Verfahren zur Verfügung hat, dann werden Sie zu Update auf eine neuere Snapshot haben zuerst), zum Beispiel:

inUDPServer.Binding.AddMulticastMembership('Group IP address');

Es fügt die TIdSocketHandle.IP Adresse an die Mitglieder der angegebenen Gruppe IP. IPs kann als entweder IPv4 oder IPv6, je nach Einstellung der TIdSocketHandle.IPVersion Eigenschaft angegeben werden.

Alternativ betrachtet mit den TIdIPMCastServer und TIdIPMCastClient Komponenten statt TIdUDPServer direkt.

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