Get client IP from UDP packages received with UdpClient
Asked Answered
E

2

7

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();
             }
        }
    }
Ethmoid answered 11/5, 2011 at 13:13 Comment(0)
S
17

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

Skilful answered 11/5, 2011 at 13:20 Comment(0)
A
6
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

Aalst answered 11/5, 2011 at 13:52 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.