如果我们想从套接字广播信息,我们需要启用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