Search code examples
c#socketsendpoints

Getting the IP Address of a Remote Socket Endpoint


How do I determine the remote IP Address of a connected socket?

I have a RemoteEndPoint object I can access and well as its AddressFamily member.

How do I utilize these to find the ip address?

Thanks!

Currently trying

IPAddress.Parse( testSocket.Address.Address.ToString() ).ToString();

and getting 1.0.0.127 instead of 127.0.0.1 for localhost end points. Is this normal?


Solution

  • http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.remoteendpoint.aspx

    You can then call the IPEndPoint..::.Address method to retrieve the remote IPAddress, and the IPEndPoint..::.Port method to retrieve the remote port number.

    More from the link (fixed up alot heh):

    Socket s;
            
    IPEndPoint remoteIpEndPoint = s.RemoteEndPoint as IPEndPoint;
    IPEndPoint localIpEndPoint = s.LocalEndPoint as IPEndPoint;
    
    if (remoteIpEndPoint != null)
    {
        // Using the RemoteEndPoint property.
        Console.WriteLine("I am connected to " + remoteIpEndPoint.Address + " on port number " + remoteIpEndPoint.Port);
    }
    
    if (localIpEndPoint != null)
    {
        // Using the LocalEndPoint property.
        Console.WriteLine("My local IpAddress is " + localIpEndPoint.Address + " connected on port number " + localIpEndPoint.Port);
    }