C# Can';不能在WinRT中接收广播
我试图在WinRT/C#中通过DatagramSockets接收广播,但我没有收到数据包 更具体地说,这是我的代码:C# Can';不能在WinRT中接收广播,c#,windows-runtime,C#,Windows Runtime,我试图在WinRT/C#中通过DatagramSockets接收广播,但我没有收到数据包 更具体地说,这是我的代码: public sealed partial class MainPage : Page { public MainPage(){ this.InitializeComponent(); } private DatagramSocket listener; async private void Loaded(object se
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网络上进行尝试。
我错过什么了吗?有可能吗
我希望你们中有人能帮助我
(附言:我知道这和这篇帖子很相似:但已经一年多没有进展了,所以…我解决了它。
您只需从其他设备发送广播。
但是,它不喜欢从同一设备发送广播……对于windows phone,我发现只有在发送一些数据包后才能接收数据包。它可能也适用于WinRT。