Поддерживает ли Windows Phone 7 Mango UDP-трансляцию? - PullRequest
8 голосов
/ 10 октября 2011

Согласно документации MSDN Mango не поддерживает UDP-трансляцию. Согласно этому потоку это как-то возможно. У кого-нибудь есть опыт работы с UDP на Phone 7? Фрагмент кода в C # был бы признателен.

EDIT: Мы провели дальнейшие исследования. Кажется, работает следующий код

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

Важно вызвать ConnectToAsync до SendToAsync, в противном случае вы получите исключение, запрещающее доступ. Кажется, UDP работает как-то, по крайней мере, в эмуляторе. Вопрос в том, будет ли он работать вживую и почему в документации сказано, что нет?

Ответы [ 2 ]

3 голосов
/ 11 октября 2011

Для ОС Windows Phone 7.1 поддерживаются одноадресные TCP, одноадресные UDP и многоадресные UDP-клиенты. (ОС 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

И еще больше примеров кода в разделе «09-DemoCode Networking» в http://borntolearn.mslearn.net/wpmango/m/mediagallery/default.aspx

Вот еще одно сообщение, которое может вас вдохновить: Как транслировать пакет UDP на WP7 Mango?

Сообщалось о том, что некоторые прошивки ОС OS имеют плохую производительность UDP: http://connect.microsoft.com/VisualStudio/feedback/details/690198/poor-udp-performance-in-windows-phone-7-mango

0 голосов
/ 16 июля 2012

Приведенный выше код не работает в WP7, по той простой причине, что SetSocketOption определен в C #, но не в Silverlight. Поэтому вышеприведенное может работать на вашем компьютере, но даже не будет компилироваться на WP7!

Что касается практического ответа, я думаю, что Ронни хорошо ответил: «Поддерживаются одноадресные TCP, многоадресные UDP-клиенты и многоадресные UDP-клиенты», если кто-то не может опубликовать некоторый код, поддерживающий широковещательную передачу UDP на WP7, ответ остается «НЕТ».

Я думаю, что эта тема должна быть закрыта.

...