Indy 10 und Einstellung Socket-Optionen
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 sollinUDPServer.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
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.