Indy opciones de conector 10 y el establecimiento
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
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.