C# 从IP地址获取主机名

C# 从IP地址获取主机名,c#,C#,我已经用下面的代码获得了连接的客户端IP,但似乎无法获得主机名 Globals.connectedIPAddress = "" + IPAddress.Parse((( IPEndPoint)_client.Client.RemoteEndPoint).Address.ToString()); 不是每个IP地址都有名字。但是,给定IPAddress,您可以使用来尝试解决它。还要注意的是,如果它是NAT路由器,您将获得路由器的IP地址,而不是它们的实际机器 为了解决评论中的问题,我同意T

我已经用下面的代码获得了连接的客户端IP,但似乎无法获得主机名

Globals.connectedIPAddress = "" + IPAddress.Parse(((
    IPEndPoint)_client.Client.RemoteEndPoint).Address.ToString());

不是每个IP地址都有名字。但是,给定
IPAddress
,您可以使用来尝试解决它。还要注意的是,如果它是NAT路由器,您将获得路由器的IP地址,而不是它们的实际机器

为了解决评论中的问题,我同意ToString/Parse/ToString没有任何意义:

IPAddress address = ((IPEndPoint)_client.Client.RemoteEndPoint).Address;
Globals.connectedIPAddress = address.ToString();

只是好奇:你的ToString解析ToString混乱有什么目的吗?新手巴德。如果有更干净的方法,那么我想知道。如果是NAT路由器,你将得到路由器的IP地址,而不是他们的实际机器。-是否有可能获得实际的机器名(域名)?@JonSkeet没有比这更好的方法了(2.5年后)?在我的网络上,这种方法每次都会抛出一个异常。@ChaseFlorell:据我所知,自2010年以来,网络没有发生太大的变化……是的,我同意,只是觉得.NET可能添加了一些工具来提高可靠性。我“可以”使用这个方法,除非它不会优雅地失败。如果未获取主机名,则抛出异常。