当前位置:  开发笔记 > 编程语言 > 正文

从UdpClient收到的UDP包中获取客户端IP

如何解决《从UdpClient收到的UDP包中获取客户端IP》经验,为你挑选了2个好方法。

我正在System.Net.Sockets.UdpClient类的帮助下开发一个动作多人游戏.

它适用于两个玩家,因此应该打开服务器并等待传入​​的连接.另一个玩家输入主机IP并尝试发送"ping",以确保连接是可能的并且有一个打开的服务器.然后主持人用"乒乓球"回应.

一旦游戏运行,两者都必须向对方发送udp消息,因此他们都需要对手的ip地址.

当然服务器也可以输入客户端IP,但这对我来说似乎是不必要的.

当收到"ping"消息时,如何从udp包中获取客户端IP?

这是我的接收代码(等待ping的服务器):

    private void ListenForPing()
    {
        while (!closeEverything)
        {
             var deserializer = new ASCIIEncoding();
             IPEndPoint anyIP = new IPEndPoint(IPAddress.Any, 0);
             byte[] recData = udp.Receive(ref anyIP);
             string ping = deserializer.GetString(recData);
             if (ping == "ping")
             {
                 Console.WriteLine("Ping received.");
                 InvokePingReceiveEvent();
             }
        }
    }

sipwiz.. 14

在您的示例中,当客户端连接时,anyIP IPEndPoint对象将包含客户端连接的地址和端口.



1> sipwiz..:

在您的示例中,当客户端连接时,anyIP IPEndPoint对象将包含客户端连接的地址和端口.



2> Saint..:
private void ListenForPing()
{
    while (!closeEverything)
    {

         IPEndPoint anyIP = new IPEndPoint(IPAddress.Any, 0);
         byte[] recData = udp.Receive(ref anyIP);
         string ping = Encoding.ASCII.GetString(recData);
         if (ping == "ping")
         {
             Console.WriteLine("Ping received.");
             Console.WriteLine("Ping was sent from " + anyIP.Address.ToString() +
                             " on their port number " + anyIP.Port.ToString());
             InvokePingReceiveEvent();
         }
    }
}

http://msdn.microsoft.com/en-us/library/system.net.sockets.udpclient.receive.aspx

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有