首页 文章

如何通过UDP套接字广播?

提问于
浏览
0

我试图通过UDP协议在注册的多个客户端上广播消息 .

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

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

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

我们可以看到,我们需要6个参数,第二个是接收者的地址 . 在客户端到服务器的情况下,我们有地址 . 但是从服务器到客户端,我们只有收到消息的最后一个客户端的地址 .

I had also tried storing the addresses of all sockets who connect to server atleast once , so that we can use sendto(), But as all client are running on same machine, That &from seems to be same.

有哪些替代品?我哪里错了?我只想向在本地计算机上运行的所有客户端广播消息 . ?

1 回答

  • 0

    网络堆栈实现默认情况下可能不允许发送UDP广播 . 您需要在某些环境中启用广播:

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

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

相关问题