我正在Linux 平台上做一些编程。
我想做一个UDP广播。
我设置套接字选项 SO_BROADCAST
,当我调用 sendto()
系统调用时它完美地发送广播,但是当我使用 bind()
将套接字描述符与目标地址绑定(bind)并调用 write()
系统调用,它会引发错误消息:
Destination address required
请给我一些提示,谢谢!
最佳答案
bind() 不设置目标地址,它设置本地(源)地址。
您需要使用 connect() 来建立目标地址。
UDP 当然是无连接的,但是调用 connect() 将允许您将套接字与远程地址相关联 - 这允许您在套接字上使用 write() 和 send()。但是,套接字随后也将只接受来自您在 connect() 中指定的地址的传入消息 - 这对于广播流量来说可能是不需要的,因为永远不应该有来自广播地址的消息。
关于linux - 使用 write() 系统调用发送 UDP 广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24362156/