Get client IP from UDP packages received with UdpClient

◇◆丶佛笑我妖孽 提交于 2019-12-05 00:43:48

问题


I am developing an action multiplayer game with the help of the System.Net.Sockets.UdpClient class.

It's for two players, so one should open a server and wait for incoming connections. The other player inputs the host IP and tries to send a "ping", to make sure a connection is possible and there is an open server. The host then responds with a "pong".

Once the game is running, both have to send udp messages to each other, so they both need the opponents ip address.

Of course the server could also input the clients IP, but that seems unneccessary to me.

How can I get the clients IP from the udp package when the "ping" message is received?

Here is my receiving code (server waiting for 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();
             }
        }
    }

回答1:


In your example, when a client connects, the anyIP IPEndPoint object will contain the address and port of the client connection.




回答2:


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



来源:https://stackoverflow.com/questions/5964846/get-client-ip-from-udp-packages-received-with-udpclient

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!