Domanda

Forse la soluzione a questo è molto semplice e io sono solo troppo stupidi per vederlo. Ho bisogno di ricompilare una vecchia applicazione con Indy 10 e c'è questa linea che ha usato essere

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

ma il nuovo TIdSocketHandle.SetSockOpt prende 3 interi. Ora come faccio a fornire l'ip_mreq? Solo di passaggio i risultati imr_multiaddr.S_addr in un # 10014 Error - Errore Buffer. Forse uno di voi ha un'idea.

Saluti Andy

È stato utile?

Soluzione

Utilizzare il metodo TIdSocketHandle.AddMulticastMembership() invece (se la vostra versione di Indy 10 non ha questo metodo disponibile, allora si dovrà aggiornamento per una fotografia più recente prima), per esempio:

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

Si aggiunge l'indirizzo TIdSocketHandle.IP ai membri del Gruppo IP specificato. IP possono essere specificati come IPv4 o IPv6, a seconda dell'impostazione della proprietà TIdSocketHandle.IPVersion.

In alternativa, è possibile utilizzare i componenti TIdIPMCastServer e TIdIPMCastClient anziché TIdUDPServer direttamente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top