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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top