Indy et 10 options de réglage de prise
Question
Peut-être la solution à cette question est très simple et je suis trop stupide pour le voir. Je dois recompiler une ancienne application avec Indy 10 et il y a cette ligne qui était autrefois
inUDPServer.Binding.SetSockOpt(Id_IPPROTO_IP, Id_IP_ADD_MEMBERSHIP, PChar(@mreq), SizeOf(mreq));
mais la nouvelle TIdSocketHandle.SetSockOpt prend 3 entiers. Maintenant, comment suis-je censé fournir ip_mreq? Il suffit de passer les résultats imr_multiaddr.S_addr dans une # 10014 Erreur - faute tampon. Peut-être l'un des gars vous a une idée.
Vive Andy
La solution
Utilisez la méthode TIdSocketHandle.AddMulticastMembership()
à la place (si votre version de Indy 10 ne dispose pas de cette méthode disponible, vous devrez mettre à jour un instantané plus récent en premier), par exemple:
inUDPServer.Binding.AddMulticastMembership('Group IP address');
Il ajoute l'adresse TIdSocketHandle.IP
aux membres du groupe spécifié IP. IP peuvent être spécifiés comme IPv4 ou IPv6, en fonction du réglage de la propriété TIdSocketHandle.IPVersion
.
Vous pouvez également envisager d'utiliser les composants de TIdIPMCastServer
et TIdIPMCastClient
au lieu de TIdUDPServer
directement.