C# 从UdpClient接收的UDP包获取客户端IP

C# 从UdpClient接收的UDP包获取客户端IP,c#,.net,network-programming,udp,udpclient,C#,.net,Network Programming,Udp,Udpclient,我正在班级的帮助下开发一款动作多人游戏 这是为两个玩家准备的,所以一个玩家应该打开一个服务器并等待传入的连接。另一个玩家输入主机IP并尝试发送“ping”,以确保连接是可能的,并且有一个打开的服务器。然后,主机会发出“砰”的一声回应 一旦游戏运行,双方都必须向对方发送udp消息,因此他们都需要对方的ip地址 当然,服务器也可以输入客户端IP,但这对我来说似乎没有必要 当收到“ping”消息时,如何从udp包获取客户端IP 这是我的接收代码(服务器正在等待ping): 在您的示例中,当客户端连接时

我正在班级的帮助下开发一款动作多人游戏

这是为两个玩家准备的,所以一个玩家应该打开一个服务器并等待传入的连接。另一个玩家输入主机IP并尝试发送“ping”,以确保连接是可能的,并且有一个打开的服务器。然后,主机会发出“砰”的一声回应

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

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

当收到“ping”消息时,如何从udp包获取客户端IP

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


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

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();
         }
    }
}

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();
         }
    }
}