Perché abbiamo bisogno di SocketOptions.SO_BROADCAST per attivare la trasmissione?

Se vogliamo trasmettere informazioni da una presa, abbiamo bisogno di attivare SocketOptions.SO_BROADCAST. Tuttavia, non capisco il motivo che è necessario.

La mia comprensione è che abbiamo impostato il pacchetto con un indirizzo di broadcast, allo stesso modo di come impostare un indirizzo unicast. È sufficiente inviare attraverso una normale presa di corrente. Se è un socket UDP, quindi una intestazione UDP sarà aggiunto al pacchetto, e quindi un IP header contenente l’indirizzo IP del ricevitore (in questo caso è l’indirizzo di broadcast in forma di 192.168.255.255), e quindi un indirizzo MAC (FF:FF:FF:FF) è aggiunto.

Penso che il router di ottenere il pacchetto e di effettuare la trasmissione. Non capisco perché abbiamo bisogno di impostare l’attributo socket a SO_BROADCAST.

  • Nella maggior parte dei casi queste chiamate basta chiamare la stessa cosa del sistema operativo. Questo è probabile che sia una limitazione del sistema operativo, non Java.
  • Si dovrebbe mettere che come risposta @PeterLawrey
InformationsquelleAutor henryyao | 2013-04-25

 

2 Replies
  1. 21

    “Presa semantica richiedono l’utilizzo di un set di applicazioni il SO_BROADCAST opzione prima di tentare di inviare un datagramma di una base o di indirizzo di broadcast. Questo protegge l’applicazione accidentalmente l’invio di un datagramma di molti sistemi.”

    Fonte

    • grazie mille. Credo che questo vale per linux e windows
    • fonte link è rotto 🙁
    • Ho risolto ora.
  2. 3

    Nella maggior parte dei casi queste chiamate basta chiamare la stessa cosa del sistema operativo. Questo è probabile che sia una limitazione del sistema operativo, non Java.

    • ok, ma una domanda è perché linux è bisogno di fare che? la stessa cosa sembra essere utilizzato in windows e

Lascia un commento