El servidor no debe estar vinculado a una dirección que obtenga de getaddrinfo
, en su lugar, debe estar vinculado a 127.255.255.255
(para la interfaz de bucle invertido).
Para ver un ejemplo listo para usar de servidor/cliente de transmisión, consulte http://www.ccplusplus.com/2011/09/udp-broadcast-client-server-example.html
Los sockets de dominio de Unix no son compatibles con la transmisión múltiple o la transmisión.
Puede transmitir en la interfaz local 127.0.0.1.
Si bien la pregunta original no lo dice explícitamente, creo que el autor de la pregunta original quería "transmitir" a múltiples aplicaciones que se ejecutan en la misma instancia del sistema operativo (la misma computadora para los temporizadores antiguos).
Esto está respaldado por el uso de 'SO_REUSEADDR' en el ejemplo del oyente, los comentarios de seguimiento de Yuvi y, finalmente, una sugerencia para usar la multidifusión IP.
La pregunta original debe aclararse.
Creo que la distribución de paquetes con múltiples carpetas en un solo puerto UDP varía entre los sistemas operativos cuando se usa SO_REUSEADDR. Mi experiencia en Windows reciente es que una única "carpeta" recibe exclusivamente todos los paquetes hasta que libera su vinculación, momento en el cual, otra Se elige carpeta y se presentan todos los paquetes recibidos, hasta que se libera, y así sucesivamente...
Aparentemente, esto difiere de los kernels de Linux recientes, como se explica en este enlace:https://stackoverflow.com/a/14388707/86375Esa página parece afirmar que Linux recibirá paquetes por turnos entre múltiples carpetas.
El resultado final, si espera enviar a muchos usando un solo datagrama enviado como lo hizo el cartel original, e intenta usar IP unicast, no IP multicast, puede sentirse decepcionado. (Mi experiencia y el enlace muestra arriba que puede vincular múltiples, pero eso no implica la entrega múltiple de datagramas recibidos, ni en Linux ni en Windows)
El cartel original debería haber intentado usar multidifusión.