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

时间:2011-10-10 12:46:06

标签: c# udp broadcast windows-phone-7

根据MSDN documentation芒果不支持UDP广播。根据这个thread,它在某种程度上是可能的。有人在Phone 7上有过UDP的经验吗? C#中的代码片段将不胜感激。

编辑: 我们进行了进一步的调查。以下代码似乎有效

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);    

必须在SendToAsync之前调用ConnectToAsync,否则会出现拒绝访问的异常。 UDP似乎以某种方式工作,至少在模拟器中。问题是,它是否会在现实中起作用,以及文档说它不是为什么?

2 个答案:

答案 0 :(得分:3)

对于Windows Phone OS 7.1,支持TCP单播,UDP单播和UDP多播客户端 (OS 7.1表示Windows Phone 7.5 / Mango)

以下是有关套接字类的文档的链接:http://msdn.microsoft.com/en-us/library/attbb8f5(v=VS.95).aspx

以下是带有示例代码的博客的链接:http://www.pitorque.de/MisterGoodcat/post/Windows-Phone-7-Mango-Sockets.aspx

http://borntolearn.mslearn.net/wpmango/m/mediagallery/default.aspx

中“09-DemoCode Networking”下的更多示例代码

以下是另一条可能激励您的信息:How to broadcast a UDP packet on WP7 Mango?

据报道,som操作系统固件的UDP性能较差:http://connect.microsoft.com/VisualStudio/feedback/details/690198/poor-udp-performance-in-windows-phone-7-mango

答案 1 :(得分:0)

上面的代码在WP7中不起作用,原因很简单,因为SetSocketOption是在C#中定义的,而不是在Silverlight中定义的。 因此,上述内容可能适用于您的计算机,但它甚至无法在WP7上编译!

至于实际答案,我认为Ronny已经很好地回答了“支持TCP单播,UDP单播和UDP多播客户端”,除非有人能在WP7上发布一些支持UDP广播的代码,否则答案仍为“否”。

我认为应该关闭这个帖子。