Pregunta

Tal vez la solución a esto es muy simple y yo soy demasiado tonto como para verlo. Necesito volver a compilar una aplicación de edad con Indy 10 y hay esta línea que solía ser

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

pero el nuevo TIdSocketHandle.SetSockOpt toma 3 enteros. Ahora, ¿cómo se supone que voy a proporcionar al ip_mreq? De paso los resultados en un imr_multiaddr.S_addr # 10014 Error - Error de búfer. Tal vez uno de ustedes tiene una idea.

Saludos Andy

¿Fue útil?

Solución

Utilice el método TIdSocketHandle.AddMulticastMembership() lugar (si su versión de Indy 10 no tiene ese método disponible, entonces usted tendrá que actualizar a una instantánea más reciente primero), por ejemplo:

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

Se añade la dirección TIdSocketHandle.IP a los miembros del Grupo de IP especificada. IPs pueden especificarse como IPv4 o IPv6, dependiendo de la configuración de la propiedad TIdSocketHandle.IPVersion.

Alternativamente, considerar el uso de los componentes TIdIPMCastServer y TIdIPMCastClient en lugar de TIdUDPServer directamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top