내 Windows Phone 7 Mango 앱에서 들어오는 UDP 패킷을 청취하려고하지만 시간이 지났습니다. Windows Phone 7.1 SDK와 개발자 도구가 새로이 베타 2 새로 고침되었습니다. 이 MSDN sample에서 시도한 모든 오류는 SocketException 10022, "잘못된 인수가 제공되었습니다."라는 결과를 초래합니다.Windows Phone 7에서 비동기로 UDP 유니 캐스트 패킷을 수신하는 문제
는 내 코드는 아래에 붙여 넣습니다. 나는 this stackoverflow post에있는 코드를 적용하려고 노력했지만 아무 소용이 없다. 이 행에 도달하면 예외가 발생합니다.
synchronous = m_udpSock.ReceiveFromAsync(udpRecvArg);
여기 누군가가 잘못되어 있는지 확인하는 데 도움이되기를 바랍니다. 사용자가 버튼을 누르면 "StartUnicastListen()"을 호출합니다. m_udpSock은 이전에 클래스 변수로 정의되고 null로 설정됩니다. ReceiveFromAsync() MSDN 페이지의 "Remarks"섹션에 필요한 모든 속성과 이벤트를 설정했습니다.
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()의 적절한 사용에있다 - 지금 일반적으로 윈도우 폰 7과 System.Net.Sockets에 - 유일한 WP7에 이것에 대한 옵션을 것 같다.
제공 할 수있는 도움에 미리 감사드립니다.
나는 비슷한 문제가 있습니다 ... 그렇지 않으면, 당신은이 예외를 얻을 것이다 .. SendTAsync()의 완료 이벤트에서() ReceiveFormAsync를 호출해야합니다. 어떤 이유로 나는 ReceiveFromAsync에 대한 예외도 얻는다. –
여기에도 같은 문제가 있습니다. – IDWMaster
같은 문제가 있습니다. | – Antimony