代码如下:
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);总是报错:在其上下文中,该请求的地址无效不知道怎么回事,事情很急,感谢大家了
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);总是报错:在其上下文中,该请求的地址无效不知道怎么回事,事情很急,感谢大家了
EndPoint endPoint = (EndPoint)ipEndPoint;
udpClient.Bind(ipEndPoint);
udpClient.BeginReceiveFrom(responseBuffer,0,responseBuffer.Length,SocketFlags.None,ref endPoint,new AsyncCallback(ReceiveCallback),udpClient);提示错误是在:udpClient.BeginReceiveFrom()这一句
socket.bind()方法是绑定本地IP地址和端口(也就是说绑定后此socket发出的消息都被认为是从这个IP的机器上的这个端口发出的),之前我不是很理解其意思,给了一个Broadcast地址现在换个问题:
1、socket.bind()方法可以给本机socket绑定不同的IP,但这么做的话接收消息机器岂不是无法正确回复信息了?无法正确找到发信“人”
2、socket.BeginReceiveFrom()方法中的remoteEP 参数到底是指本地IP还是远程机器的IP啊?看字面上是远程通讯机器的IP,但MSDN里面的例子却给了一个IPEndPoint(IPAddress.Any,0)
之所以这么给 是因为BeginReceiveFrom 方法启动从远程主机异步读取无连接数据报的操作
再通信之前不需要知道对方的endpoint
————————————————————————————————
但如果把IP改了,远程主机如何找到我呢?2 remoteEp 是数据来源远程主机终结点
之所以这么给 是因为BeginReceiveFrom 方法启动从远程主机异步读取无连接数据报的操作
再通信之前不需要知道对方的endpoint
————————————————————————————————————
还是不是很明白,如果不需要知道对方的endpoint,那BeginReceiveFrom 中要求的参数remoteEp 不就是对方的endpoint吗?
之所以这么给 是因为BeginReceiveFrom 方法启动从远程主机异步读取无连接数据报的操作
再通信之前不需要知道对方的endpoint
————————————————————————————————————
还是不是很明白,如果不需要知道对方的endpoint,那BeginReceiveFrom 中要求的参数remoteEp 不就是对方的endpoint吗?
难怪要ref endpoint,是用来收到包后把对方地址写进去的啊
————————————————————————————————
以上是我的理解,是否正确,没有问题的话此帖就可以结了^^http://community.csdn.net/Expert/topic/5489/5489987.xml?temp=.3236048
的问题大家也多多帮忙啊,在此表示感谢