Indy 10 e le opzioni di impostazione di socket
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
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.