首页 新闻 赞助 找找看

endreceivefrom 的使用

0
悬赏园豆:100 [已关闭问题] 关闭于 2009-04-29 09:01

问题:总是提示我的  ref endPoint 参数为空。也就是我的程序中的refEP.

我用的协议是UDP,使用回调方法接收数据,消息是从我自己的机器发出来的。我的主要目的是提取对方IP。请指教:

用udpSocket.BeginReceiveFrom(msgReceive, 0, msgReceive.Length, SocketFlags.None, ref refEP, new AsyncCallback(ReceiveCallBack), udpSocket)异步接收,回调函数是:

private void ReceiveCallBack(IAsyncResult ar)
        {try {
                int  rend = reSocket.EndReceiveFrom(ar, ref refEP);
                this.tb_Msg.AppendText(refEP.ToString() + System.Text.Encoding.Default.GetString(msgReceive, 0, rend) + refEP.AddressFamily.toStrint() + "\n");
                udpSocket.BeginReceiveFrom(msgReceive, 0, msgReceive.Length, SocketFlags.None, ref refEP, new AsyncCallback(ReceiveCallBack), udpSocket);
            }catch (ArgumentNullException ane)
            {MessageBox.Show(ane.Message);}
            }

问题补充: 我自己已经解决了,是我自己的问题,但我感觉MSDN说的也不明白。 Socket receiveSocket = (Socket)ar.AsyncStateIPEndPoint endPoint = new IPEndPoint(IPAddress.Any, 0); EndPoint rep = (IPEndPoint)endPoint;//将rep强制转换为IPEndPoint类型,用于获取发信方的信息(ip and port) int rend = receiveSocket.EndReceiveFrom(ar, ref rep);//结束挂起的,从特定终结点进行读取 IPEndPoint outIP = (IPEndPoint)rep;//outIP用于获取发信方信息的IPEndPoint this.tb_Msg.AppendText(outIP.Address.ToString() + outIP.Port.ToString() + System.Text.Encoding.Default.GetString(msgReceive, 0, rend) + "\n"); receiveSocket.BeginReceiveFrom(msgReceive, 0, msgReceive.Length, 0, ref rep, new AsyncCallback(ReceiveCallBack), receiveSocket);
Aeridy的主页 Aeridy | 初学一级 | 园豆:100
提问于:2009-04-22 13:33
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册