Windows 8同一台计算机上的UDP广播无法工作

3

我正在开发一个需要广播的应用程序。我创建了两个项目,客户端和服务器端。我可以发送广播消息,但是在服务器端项目中无法接收。我的代码如下:

服务器端:

    private DatagramSocket _udpSocket = new DatagramSocket();
    private async void Button_Click_1(object sender, RoutedEventArgs e)
    {
        _udpSocket.MessageReceived += _udpSocket_MessageReceived;
       
        await _udpSocket.BindServiceNameAsync("4777");                       
    }

    void _udpSocket_MessageReceived(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs args)
    {
      
    }

客户端

        HostName h = new HostName("255.255.255.255");
        IOutputStream outStream = await _socket.GetOutputStreamAsync(h, "4777");
       
        DataWriter de = new DataWriter(outStream);
        de.WriteByte(new byte());
        await de.StoreAsync();
        de.DetachBuffer();

但是,如果在客户端将255.255.255.255替换为本地IPAddress,那么我就可以在服务器上接收到消息。
问题出在哪里?

服务器在同一网络上,且服务器和客户端都在同一台电脑上运行。 - nucleons
也许你的路由器正在阻止广播?我只是提供线索,因为我自己还没有遇到过这种情况。 - TimVK
1
@TimVK 任何路由器都会阻止广播到255.255.255.255。OP:路径中是否有路由器? - user207421
当我通过任务计划程序运行服务器并通过双击其图标启动客户端时,我遇到了类似的问题。它们都在同一台机器上,但我无法接收广播。如果我手动打开它们两个,我就可以,但是当服务器通过任务计划程序启动时就不行了。有什么想法吗? - gonzobrains
只需在两台不同的机器上运行它。 - nucleons
显示剩余8条评论
1个回答

2
如果我没记错我的网络101课,当你进行广播时,数据包不会被发送回给你,而是只发送给网络上的其他计算机(尽管我可能是错误的)。此外,正如TimVK在他的评论中所说,你应该尝试使用你的网络广播地址而不是一般的广播地址(对于网络192.168.0.0/24(掩码255.255.255.0),广播地址将为192.168.0.255)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接