根据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似乎以某种方式工作,至少在模拟器中。问题是,它是否会在现实中起作用,以及文档说它不是为什么?
答案 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广播的代码,否则答案仍为“否”。
我认为应该关闭这个帖子。