2014-06-23 45 views
0

我正在Linux平台上进行一些编程。使用write()系统调用发送UDP广播

我想做一个UDP广播。

我设置套接字选项SO_BROADCAST,当我调用sendto()系统调用它完美地发送广播,但是当我使用bind()绑定套接字描述与目的地址和调用write()系统调用,它提出了一个错误信息:

Destination address required 

请给我一些建议,谢谢!

+1

'bind()'用于设置源,即绑定到您想让数据发送出去的本地接口。 'bind()'不用于定义目标地址。 – alk

+0

无论如何,使用'sendto()'有什么问题? – EJP

回答

2

bind()不设置目标地址,它设置本地(源)地址。

您需要使用connect()来建立目标地址。

UDP是当然无连接的,但调用connect()将允许您将套接字与远程地址相关联 - 这允许您在套接字上使用write()和send()。但是,套接字将只接受来自您在connect()中指定的地址的传入消息 - 这可能不是广播流量所期望的,因为绝不应该有来自广播地址的消息