49

如何确定已连接套接字的远程 IP 地址?

我有一个可以访问的 RemoteEndPoint 对象以及它的 AddressFamily 成员。

我如何利用这些来查找 IP 地址?

谢谢!

目前正在尝试

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

并获得 1.0.0.127 而不是 127.0.0.1 作为 localhost 端点。这是正常的吗?

4

4 回答 4

87

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

然后,您可以调用 IPEndPoint..::.Address 方法来检索远程 IPAddress,并调用 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 + " connected on port number " + localIpEndPoint.Port);
}
于 2009-12-14T23:12:34.470 回答
7
string ip = ((IPEndPoint)(testsocket.RemoteEndPoint)).Address.ToString();
于 2015-09-02T13:00:36.853 回答
5

RemoteEndPoint 是一个属性,它的类型是System.Net.EndPoint,它继承自System.Net.IPEndPoint

如果您查看 IPEndPoint 的members,您会看到有一个Address属性。

于 2009-12-14T23:17:57.160 回答
-2

我已经在 VB.NET 中制作了这段代码,但你可以翻译。好吧,假设您将变量Client作为TcpClient

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

希望能帮助到你!干杯。

于 2015-12-21T20:56:58.053 回答