如何在 Linux 中用 C 进行 UDP 广播?
如何在 Linux 中用 C 进行 UDP 广播?
How to UDP Broadcast with C in Linux?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如何在 Linux 中用 C 进行 UDP 广播?
How to UDP Broadcast with C in Linux?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
在许多IP堆栈中,例如Linux,此代码不起作用。 您的套接字必须具有广播权限。 尝试这个:
In many IP stack, such as Linux, this code does not work. Your socket must have broadcast permissions. Try this:
Unwind 是对的,只是您应该使用“sendto”。
这是一个示例,假设您已经有一个套接字。 它取自 clamav
Unwind has it right, except you should use 'sendto'
Here is an example, that assumes you already have a socket. It was taken from clamav
通常使用 Berkeley 套接字 API,将一个或多个数据报
sendto()
发送到已知的 广播级 IP 地址。Typically using the Berkeley sockets API, to
sendto()
one or more datagrams to a known broadcast-class IP address.最近写了一个udp多播服务器来测试。 要订阅多播,您需要将客户端订阅多播组 225.0.0.37、端口 12346 和端口 12345(2 个提要 - 一个提要发送“Hello,World!”,另一个提要发送“Bye,Office!”)。
我一直在使用它来测试我的客户端,客户端和服务器都在同一个机器上运行,因此可能有些位可能无法工作,但请先尝试一下。
I wrote udp multicast server recently for testing. To subscribe to multicast you would subscribe your client to Multicast group 225.0.0.37 port 12346 and port 12345 (2 feeds - one feeds sends "Hello, World!" the other one "Bye, Office!").
I've been using it for testing my client, both client and server run on the same box so there might be bits that may not work but give it a try first.