Я пытаюсь заставить мое приложение Windows Phone 7 Mango прослушивать входящие UDP-пакеты, но у меня очень много времени.У меня установлено новое бета-обновление 2 пакета SDK для Windows Phone 7.1 и средства разработки.Любое отклонение, которое я пробую из этого образца MSDN , приводит к SocketException 10022, «указан неверный аргумент».
Мой код вставлен ниже.Я пытался адаптировать код, который я нашел в этом сообщении stackoverflow , но безрезультатно.Эта строка генерирует исключение при достижении:
synchronous = m_udpSock.ReceiveFromAsync(udpRecvArg);
Я надеюсь, что кто-то здесь может помочь определить, что происходит не так.Я вызываю «StartUnicastListen ()», когда пользователь нажимает кнопку.m_udpSock предварительно определен как переменная класса и имеет значение null.В разделе «Замечания» на странице MSDN ReceiveFromAsync () я установил все необходимые свойства и события.
private void StartUnicastListen()
{
m_udpSock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
SocketAsyncEventArgs udpRecvArg = new SocketAsyncEventArgs();
udpRecvLoopStart(udpRecvArg);
}
private void udpRecvLoopStart(SocketAsyncEventArgs udpRecvArg)
{
byte[] udpRecvBuffer = new byte[2048];
udpRecvArg.SetBuffer(udpRecvBuffer, 0, udpRecvBuffer.Length);
udpRecvArg.RemoteEndPoint = new IPEndPoint(IPAddress.Any, 11100);
udpRecvArg.Completed += new EventHandler<SocketAsyncEventArgs>(udpRecvArg_Completed);
udpRecv(udpRecvArg);
}
private void udpRecv(SocketAsyncEventArgs udpRecvArg)
{
bool synchronous = false;
try {
synchronous = m_udpSock.ReceiveFromAsync(udpRecvArg);
} catch (SocketException e) {
Log("recvUdp()\n" + e.SocketErrorCode + "\n" + e.ToString(), false);
return;
} if (synchronous)
udpRecvArg_Completed(this, udpRecvArg);
}
void udpRecvArg_Completed(object sender, SocketAsyncEventArgs udpRecvArg) {
EndPoint udpEp = udpRecvArg.RemoteEndPoint;
string msg = Encoding.UTF8.GetString(udpRecvArg.Buffer, udpRecvArg.Offset, udpRecvArg.BytesTransferred);
Log(udpEp + " " + msg,false);
udpRecv(udpRecvArg);
}
Существует такая ограниченная документация для правильного использования ReceiveFromAsync () - что кажетсябыть единственным вариантом для этого на WP7 - и на System.Net.Sockets в Windows Phone 7 в целом прямо сейчас.
Заранее благодарим за любую помощь, которую вы можете предоставить.