Как транслировать пакет UDP на WP7 Mango? - PullRequest
5 голосов
/ 08 августа 2011

Я хочу отправить пакет 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. Пример кода UDP, приведенный на сайте сообщества App Hub, использует многоадресную передачу для достижения аналогичных результатов, но устройство, с которым я пытаюсь связаться, не может работать с многоадресной передачей.

Есть ли способ сделать такую ​​трансляцию на Манго?

1 Ответ

2 голосов
/ 08 августа 2011

Вы можете использовать socket.ConnectAsync(a);.

Из документации:

При желании может быть предоставлен буфер, который будет автоматически отправляться насокет после метода ConnectAsync завершается успешно.(UDP - это протокол без установления соединения, должен отправляться всегда, когда сеть работает)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...