0
我正在Linux平台上进行一些编程。使用write()系统调用发送UDP广播
我想做一个UDP广播。
我设置套接字选项SO_BROADCAST
,当我调用sendto()
系统调用它完美地发送广播,但是当我使用bind()
绑定套接字描述与目的地址和调用write()
系统调用,它提出了一个错误信息:
Destination address required
请给我一些建议,谢谢!
我正在Linux平台上进行一些编程。使用write()系统调用发送UDP广播
我想做一个UDP广播。
我设置套接字选项SO_BROADCAST
,当我调用sendto()
系统调用它完美地发送广播,但是当我使用bind()
绑定套接字描述与目的地址和调用write()
系统调用,它提出了一个错误信息:
Destination address required
请给我一些建议,谢谢!
bind()不设置目标地址,它设置本地(源)地址。
您需要使用connect()来建立目标地址。
UDP是当然无连接的,但调用connect()将允许您将套接字与远程地址相关联 - 这允许您在套接字上使用write()和send()。但是,套接字将只接受来自您在connect()中指定的地址的传入消息 - 这可能不是广播流量所期望的,因为绝不应该有来自广播地址的消息。
'bind()'用于设置源,即绑定到您想让数据发送出去的本地接口。 'bind()'不用于定义目标地址。 – alk
无论如何,使用'sendto()'有什么问题? – EJP