través - tipos de sockets
¿Por qué necesitamos SocketOptions.SO_BROADCAST para habilitar la difusión? (2)
"La semántica de socket requiere que una aplicación configure la opción SO_BROADCAST antes de intentar enviar un datagrama a una base o dirección de transmisión. Esto evita que la aplicación envíe accidentalmente un datagrama a muchos sistemas".
Si queremos transmitir información desde un socket, necesitamos habilitar SocketOptions.SO_BROADCAST
. Sin embargo, no entiendo por qué es necesario.
Según tengo entendido, configuramos el paquete con una dirección de transmisión, de la misma manera que configuramos una dirección de unidifusión. Entonces solo tenemos que enviarlo a través de un socket regular. Si es un socket UDP, entonces se agregará un encabezado UDP a ese paquete, y luego un encabezado IP que contenga la dirección IP del receptor (en este caso es la dirección de transmisión en forma de 192.168.255.255
), y luego una dirección MAC (FF:FF:FF:FF)
se agrega.
Creo que el enrutador obtendrá el paquete y realizará la transmisión. No entiendo por qué necesitamos establecer el atributo de socket en SO_BROADCAST
.
En la mayoría de los casos, estas llamadas solo llaman a lo mismo en el sistema operativo. Es probable que esto sea una restricción de su sistema operativo, no de Java.