linux - 使用 write() 系统调用发送 UDP 广播

标签 linux sockets udp broadcast

我正在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/

相关文章:

linux - 保持 meteor 在亚马逊 EC2 上运行

mysql - 将 float (如 4.8d-1)转换为 0.48 Linux、SQL?

linux - 在我退出非 root 用户的 ssh 后,如何让我的 Linux 程序继续运行?

objective-c - 通过套接字与 ESMTP 协商 TLS

c - 通过丢失保护加速基于 UDP 的文件传输?

linux - Typo3 linux 服务器错误 : Could not load layout file

sockets - 在 Windows 中如何检测哪个程序正在监听 TCP/IP 端口?

javascript - Socket.io 从接收者的浏览器发出,但不在发送者的浏览器上发出

Java点对点udp聊天室

python - 如何用python从DJI Tello无人机和UDP服务器收集视频数据?