无法在WinRT中接收广播

时间:2014-07-14 12:22:37

标签: c# windows-runtime

我正在尝试通过WinRT / C#中的DatagramSockets接收广播,但我只是没有收到数据包。

更具体地说,这是我的代码:

public sealed partial class MainPage : Page
 {
    public MainPage(){
        this.InitializeComponent();
    }

    private DatagramSocket listener;

    async private void  Loaded(object sender, RoutedEventArgs e) {
        listener = new DatagramSocket();
        listener.MessageReceived += MessageReceived;
        await listener.BindServiceNameAsync("50011");
    }

    private void MessageReceived(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs args) {
        txtText.Text = "Win :D:D:D:D:D:D:D"; //Breakpoint here
    }
}

程序永远不会到达断点。 我已经在appxmanifest中设置了所有正确的权限/权限。 发送广播的节目如下:

static void Main(string[] args) {
        Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
        sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);
        IPEndPoint iep = new IPEndPoint(IPAddress.Broadcast, 50011);

        string hostname = Dns.GetHostName();
        byte[] data = new byte[1];
        data[0] = 129;
        while (true) {
            sock.SendTo(data, iep);
            Console.WriteLine("Daten gesendet: {0}", data[0]);
            Thread.Sleep(1000);
        }
    }

我知道这个程序有效,因为我在同一台PC上用另一个小C#程序测试它(但不是WinRT功能,只是普通的C#)。此外,它不能是防火墙或路由问题,因为正如我刚才提到的,它已经使用了普通的C#程序(但我已经尝试关闭防火墙)。

我目前正在使用Windows 8.1和具有x64处理器的Wifi网络上进行尝试。 我错过了什么吗?它甚至可能吗?

我希望你们中的某些人可以帮助我

(PS:我知道它与这篇文章很相似:Can't Receive UDP Windows RT但是一年多来没有取得进展所以......)

1 个答案:

答案 0 :(得分:3)

我解决了。 您只需从其他设备发送广播即可。 但是,它不喜欢从同一台设备发送的广播....