我正在尝试让我的Windows Phone 7 Mango应用程序收听传入的UDP数据包,但有一点时间.我安装了Windows Phone 7.1 SDK和开发工具的新Beta 2更新.我从这个MSDN示例中尝试的任何偏差都会导致SocketException 10022,"提供了无效的参数".
我的代码粘贴在下面.我一直在尝试调整我在此stackoverflow帖子上找到的代码,但无济于事.此行在达到时生成异常:
synchronous = m_udpSock.ReceiveFromAsync(udpRecvArg);
Run Code Online (Sandbox Code Playgroud)
我希望这里有人可以帮助确定出现了什么问题.当用户按下按钮时,我正在调用"StartUnicastListen()".m_udpSock以前被定义为类变量并设置为null.根据ReceiveFromAsync()MSDN页面的"备注"部分,我设置了所有必需的属性和事件.
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" + …Run Code Online (Sandbox Code Playgroud)