如果我們想從套接字廣播信息,我們需要啓用SocketOptions.SO_BROADCAST
。但是,我不明白爲什麼這是必要的。爲什麼我們需要SocketOptions.SO_BROADCAST來啓用廣播?
我的理解是我們使用廣播地址設置數據包,就像設置單播地址一樣。然後我們只需要通過一個普通的套接字發送它。如果它是一個UDP套接字,那麼UDP頭將被添加到該包中,然後包含接收者IP地址的IP頭(在這種情況下是廣播地址,形式爲192.168.255.255
),然後添加一個MAC地址(FF:FF:FF:FF)
。
我認爲路由器會得到數據包並執行廣播。我不明白爲什麼我們需要將套接字屬性設置爲SO_BROADCAST
。
在大多數情況下,這些電話只需要調用在OS同樣的事情。這可能是您的操作系統的限制,而不是Java。 – 2013-04-25 14:49:32
你應該把它作爲一個答案@PeterLawrey – Fildor 2013-04-25 14:59:22