2011-10-10 2 views
8

В соответствии с MSDN documentation Манго не поддерживает широковещательную передачу UDP. В соответствии с этим thread это возможно. Есть ли у кого-нибудь опыт работы с UDP на телефоне 7? Будет оценен фрагмент кода в C#.Поддерживает ли Windows Phone 7 Mango передачу UDP?

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, похоже, работает как-то, по крайней мере, в эмуляторе. Вопрос в том, будет ли он работать в реальной жизни и почему в документации говорится, что нет?

+0

Я не вижу «SetSocketOption» в классе Socket в WP7 –

+0

Будет ли этот код работать на устройстве Windows Phone? – VansFannel

ответ

3

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

Вот еще одно сообщение, которое может вдохновить вас: How to broadcast a UDP packet on WP7 Mango?

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

+0

Спасибо за ссылки, но на самом деле я не отвечаю на мой вопрос, поддерживается ли UDP или нет (относительно документации это не так, но мы получили его как-то работать, по крайней мере, в эмуляторе). – slfan

+0

В соответствии с этим UDP-трансляция была протестирована и работает. http://stackoverflow.com/questions/6983815/how-to-broadcast-a-udp-packet-on-wp7-mango – Ronny

+0

Я имел в виду эту тему в своем вопросе. Вопрос в том, работает ли он ДЕЙСТВИТЕЛЬНО на телефоне 7, когда в документации говорится, что это не так. – slfan

0

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

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

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

+1

Это должен был комментарий, а не ответ. – Till

+0

Должна быть ошибка, потому что я не вижу окно «Добавить комментарий» под предыдущими сообщениями. Извините –

+0

Вы не можете комментировать эту публикацию, потому что ваш счет недостаточно высок, чтобы комментировать вопросы других людей - проверьте ВОПРОСЫ-ОТВЕТЫ. – Till