如何在WP7芒果上播放UDP数据包?

时间:2011-08-08 14:41:12

标签: c# windows-phone-7

我想从手机发送UDP数据包到有限的广播地址(IPAddress.Broadcast = 255.255.255.255)。

这是我到目前为止所使用的,它适用于Windows应用程序:

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

socket.SendToAsync(a);   

需要SetSocketOption调用以防止“拒绝访问”异常。不幸的是,这种方法似乎不适用于WP7。 App Hub社区站点上提供的UDP示例代码使用多播来实现类似的结果,但我尝试联系的设备无法处理多播。

有没有办法在芒果上做这种广播?

1 个答案:

答案 0 :(得分:2)

您可以使用socket.ConnectAsync(a);

来自文档:

可选地,可以提供缓冲区,该缓冲区将在ConnectAsync方法成功之后以原子方式在套接字上发送。 (UDP是一种无连接协议,应该在网络工作时始终发送)