日期:2014-05-19  浏览次数:20948 次

求助:Socket异步接收问题,BeginReceiveFrom总是报错,不知道如何解决
代码如下:
IPEndPoint   ipEndPoint   =   new   IPEndPoint(IPAddress.Broadcast,5000);
EndPoint   endPoint   =   (EndPoint)ipEndPoint;
udpClient.Bind(ipEndPoint);
udpClient.BeginReceiveFrom(responseBuffer,0,responseBuffer.Length,SocketFlags.None,ref   endPoint,new   AsyncCallback(ReceiveCallback),udpClient);

总是报错:在其上下文中,该请求的地址无效

不知道怎么回事,事情很急,感谢大家了

------解决方案--------------------
2 remoteEp 是数据来源远程主机终结点
之所以这么给 是因为BeginReceiveFrom 方法启动从远程主机异步读取无连接数据报的操作
再通信之前不需要知道对方的endpoint
------解决方案--------------------
1 bind绑定本地端 是绑定了接受端 和谁发信息毫无关系
------解决方案--------------------
IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Broadcast,5000);

这里错了

应该是IPAddress.Any, 0

如果你用异步的路子来写的话,得到对方的ip应该是在 socket.EndReceiveFrom(IAsyncresult, ref endpoint) 这里的endpoint

BeginReceiveFrom里也提供了, 我觉得只是为了方便, 如果你想写在这里雕完函数马上阻塞, 组塞之后,就可以在endpoint里得到对方的地址了,不用在End之后