简体   繁体   English

Windows Phone 7 Mango是否支持UDP广播?

[英]Does Windows Phone 7 Mango support UDP broadcast?

According to the MSDN documentation Mango does not support UDP broadcast. 根据MSDN文档, Mango不支持UDP广播。 According to this thread it is somehow possible. 根据这个线索,这是有可能的。 Does anybody have any experience with UDP on Phone 7? 有人在Phone 7上使用UDP有经验吗? A code snippet in C# would be appreciated. C#中的代码片段将不胜感激。

EDIT: We made some further investigations. 编辑:我们做了一些进一步的调查。 The following code seems to work 以下代码似乎有效

Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);    
socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);    

byte[] data = Encoding.UTF8.GetBytes("test data");    

SocketAsyncEventArgs a = new SocketAsyncEventArgs();    

a.RemoteEndPoint = new IPEndPoint(IPAddress.Broadcast, 11000);    
a.SetBuffer(data, 0, data.Length);    

a.Completed += new EventHandler<SocketAsyncEventArgs>(delegate(object s, SocketAsyncEventArgs e) 
{ 
  Console.WriteLine(e.SocketError); 
  // here you can call socket.SendToAsync(sendEventArgs);
}); 

socket.ConnectToAsync(a);    

It is essential to call ConnectToAsync before SendToAsync, otherwise you get an access denied exception. 在SendToAsync之前调用ConnectToAsync是必不可少的,否则您将获得拒绝访问的异常。 UDP seems to work somehow, at least in the emulator. UDP至少在模拟器中似乎可以以某种方式工作。 The question is, will it work in real live and why the documentation says it doesn't? 问题是,它可以实时运行吗?为什么文档说不行?

For Windows Phone OS 7.1, TCP unicast, UDP unicast, and UDP multicast clients are supported (OS 7.1 means Windows Phone 7.5/Mango) 对于Windows Phone OS 7.1,支持TCP单播,UDP单播和UDP多播客户端(OS 7.1表示Windows Phone 7.5 / Mango)

Here is link to documentation about the Socket Class: http://msdn.microsoft.com/en-us/library/attbb8f5(v=VS.95).aspx 这是有关套接字类的文档的链接: http : //msdn.microsoft.com/zh-cn/library/attbb8f5(v=VS.95).aspx

Here is link to a blog with sample code: http://www.pitorque.de/MisterGoodcat/post/Windows-Phone-7-Mango-Sockets.aspx 这是带有示例代码的博客链接: http : //www.pitorque.de/MisterGoodcat/post/Windows-Phone-7-Mango-Sockets.aspx

And even more sample code under "09-DemoCode Networking" in http://borntolearn.mslearn.net/wpmango/m/mediagallery/default.aspx 还有http://borntolearn.mslearn.net/wpmango/m/mediagallery/default.aspx中 “ 09-DemoCode Networking”下的更多示例代码

Here is another message that might inspire you: How to broadcast a UDP packet on WP7 Mango? 这是另一条可能激发您灵感的消息: 如何在WP7 Mango上广播UDP数据包?

There has been reported som OS firmware with bad UDP performance: http://connect.microsoft.com/VisualStudio/feedback/details/690198/poor-udp-performance-in-windows-phone-7-mango 有报告说Som OS固件的UDP性能不佳: http : //connect.microsoft.com/VisualStudio/feedback/details/690198/poor-udp-performance-in-windows-phone-7-mango

The code above doesn't work in WP7, this for the simple reason that SetSocketOption is defined in C# but not in Silverlight. 上面的代码在WP7中不起作用,这是出于以下简单原因:SetSocketOption是在C#中定义的,而不是在Silverlight中定义的。 Therefore the above might work in your computer but it won't even compile on WP7! 因此以上内容可能会在您的计算机上运行,​​但甚至无法在WP7上编译!

As for the practical answer I think Ronny has answered well "TCP unicast, UDP unicast, and UDP multicast clients are supported", unless someone can post some code which supports UDP broadcast on WP7 the answer remains "NO". 至于实际答案,我认为Ronny回答得很好:“支持TCP单播,UDP单播和UDP多播客户端”,除非有人可以在WP7上发布一些支持UDP广播的代码,否则答案仍然为“否”。

I think this thread should be closed. 我认为该线程应该关闭。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM