Получение IP-адреса удаленной конечной точки сокета - PullRequest
34 голосов
/ 15 декабря 2009

Как определить удаленный IP-адрес подключенного сокета?

У меня есть объект RemoteEndPoint, к которому я могу получить доступ, а также его член AddressFamily.

Как я могу использовать их, чтобы найти IP-адрес?

Спасибо!

Сейчас пытаюсь

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

и получение 1.0.0.127 вместо 127.0.0.1 для конечных точек локального хоста. Это нормально?

Ответы [ 4 ]

60 голосов
/ 15 декабря 2009

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

Затем можно вызвать метод IPEndPoint .. ::. Address для получения удаленного IP-адреса и метод IPEndPoint .. ::. Port для получения номера удаленного порта.

Больше по ссылке (исправлено много хе):

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 + "I am connected on port number " + localIpEndPoint.Port);
}
5 голосов
/ 15 декабря 2009

RemoteEndPoint - это свойство, его тип System.Net.EndPoint , который наследуется от System.Net.IPEndPoint .

Если вы посмотрите на членов IPEndPoint , вы увидите, что есть свойство Address.

3 голосов
/ 02 сентября 2015
string ip = ((IPEndPoint)(testsocket.RemoteEndPoint)).Address.ToString();
0 голосов
/ 21 декабря 2015

Я сделал этот код в VB.NET, но вы можете перевести. Хорошо представим, что у вас есть переменная Client как TcpClient

Dim ClientRemoteIP As String = Client.Client.RemoteEndPoint.ToString.Remove(Client.Client.RemoteEndPoint.ToString.IndexOf(":"))

Надеюсь, это поможет! Приветствия.

...