gpt4 book ai didi

c - 如何通过UDP套接字进行广播?

转载 作者:行者123 更新时间:2023-11-30 17:21:33 25 4
gpt4 key购买 nike

我正在尝试通过 UDP 协议(protocol)通过注册的多个客户端广播消息。

我相信我们需要以下两个命令来通过套接字发送和接收:

sendto(sock,buffer,
strlen(buffer),0,(const struct sockaddr *)&server,length);

recvfrom(sock,buffer,256,0,(struct sockaddr *)&from, &length);

正如我们所见,我们需要 6 个参数,倒数第二个是收件人的地址。如果是客户端到服务器,我们有地址。但是从服务器到客户端,我们只有收到消息的最后一个客户端的地址。

我还尝试过存储至少一次连接到服务器的所有套接字的地址,以便我们可以使用 sendto(),但由于所有客户端都在同一台计算机上运行,​​因此 &from 似乎是一样的。

有哪些可用的替代方案?我哪里出错了?我只想向本地计算机上运行的所有客户端广播一条消息。 ?

最佳答案

默认情况下,网络堆栈实现可能不允许发送 UDP 广播。某些环境下需要开启广播:

int allow_broadcast = 1;
setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (void*) &allow_broadcast, sizeof(allow_broadcast));

setsockopt 的实际参数列表应该在您的操作系统文档中提供,例如 12 .

关于c - 如何通过UDP套接字进行广播?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28276577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com