Se vogliamo trasmettere informazioni da un socket, dobbiamo abilitare SocketOptions.SO_BROADCAST
. Tuttavia, non capisco perché sia necessario.Perché abbiamo bisogno di SocketOptions.SO_BROADCAST per abilitare la trasmissione?
La mia comprensione è che impostiamo il pacchetto con un indirizzo di trasmissione, proprio come si imposta un indirizzo unicast. Quindi dobbiamo solo inviarlo tramite una presa normale. Se è un socket UDP, verrà aggiunta un'intestazione UDP a quel pacchetto e quindi un'intestazione IP contenente l'indirizzo IP del destinatario (in questo caso l'indirizzo di broadcast sotto forma di 192.168.255.255
), quindi verrà aggiunto un indirizzo MAC (FF:FF:FF:FF)
.
Penso che il router riceverà il pacchetto ed eseguirà la trasmissione. Non capisco perché è necessario impostare l'attributo socket su SO_BROADCAST
.
Nella maggior parte dei casi queste chiamate basta chiamare la stessa cosa nel sistema operativo. Questa potrebbe essere una restrizione del tuo sistema operativo, non di Java. –
Dovresti metterlo come risposta @PeterLawrey – Fildor