我正在研究用C编写的客户端 - 服务器应用程序.我想向本地网络上的所有可用机器广播消息.
如何使用C中常用的套接字系统调用来做到这一点?
只需将消息发送到您的子网的广播地址(对于192.168.0.0/24就是192.168.0.255),或仅广播到255.255.255.255。
您必须使用UDP通过网络发送广播消息.通过创建套接字时socket()
功能,指定AF_INET
为family
参数,并SOCK_DGRAM
为type
参数.在某些系统上,您必须通过将SO_BROADCAST
套接字选项设置为1 来启用广播数据包的发送,使用setsockopt()
.
然后使用sendto()
函数调用发送数据报,并255.255.255.255
用作目标地址.(对于数据报套接字,您不需要调用connect()
,因为没有'连接').
在标准实现中,该地址广播到本地网络中的所有计算机,这意味着该数据包不会跨越网关边界,并且不会被使用与发送计算机的网络掩码不同的网络掩码的计算机接收.