简体   繁体   English

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

[英]How to broadcast a UDP packet on WP7 Mango?

I want to send a UDP packet from a phone to the limited broadcast address (IPAddress.Broadcast = 255.255.255.255). 我想从手机发送UDP数据包到有限的广播地址(IPAddress.Broadcast = 255.255.255.255)。

This is what I have so far, and it works in a Windows app: 这是我到目前为止,它适用于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);   

The SetSocketOption call is required in order to prevent an "access denied" exception. 需要SetSocketOption调用以防止“拒绝访问”异常。 Unfortunately that method doesn't seem to be available on WP7. 不幸的是,这种方法似乎不适用于WP7。 The UDP sample code given on the App Hub community site is using multicast to achieve similar results, but the device I'm trying to contact isn't able to deal with multicast. App Hub社区站点上提供的UDP示例代码使用多播来实现类似的结果,但我尝试联系的设备无法处理多播。

Is there any way to do this sort of broadcast on Mango? 有没有办法在芒果上做这种广播?

You can use socket.ConnectAsync(a); 你可以使用socket.ConnectAsync(a); .

From Documentation: 来自文档:

Optionally, a buffer may be provided which will atomically be sent on the socket after the ConnectAsync method succeeds. 可选地,可以提供缓冲区,该缓冲区将在ConnectAsync方法成功之后以原子方式在套接字上发送。 (UDP is a connectionless protocol, should send always when network works) (UDP是一种无连接协议,应该在网络工作时始终发送)

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

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