我希望能够从手机向有限广播地址(IPAddress.Broadcast = 255.255.255.255)发送一个UDP数据包。
目前我已经编写了以下代码,在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示例代码使用组播来达到类似的结果,但我要联系的设备无法处理组播。
在Mango上有没有办法进行这种广播?