2010-07-15 220 views
10

我已經設法使用下面的代碼獲取連接的客戶端IP,但似乎無法獲取主機名。從IP地址獲取主機名

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

只是好奇:你的ToString,語法分析的ToString混亂有什麼目的? – dtb 2010-07-15 14:25:47

+0

新手芽。如果有更清潔的方式,我想請知道。 – arbme 2010-07-15 15:04:42

回答

14

嗯,不是每個IP地址的名稱。但是,考慮到IPAddress您可以使用Dns.GetHostEntry嘗試來解決它。另外請注意,如果它是一個NAT路由器,您將獲得路由器的IP地址,而不是他們的實際機器。

而只是爲了在評論中解決問題,我同意,有沒有點中的ToString /解析/的ToString:

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

@如果它是一個NAT路由器,你將得到路由器的IP地址,而不是他們的實際機器。 - 是否有可能獲得實際的機器名稱(域名)? – 2012-01-25 09:22:09

+0

@VijayBalkawade:我希望不會,親自... – 2012-01-25 09:36:39

+0

@JonSkeet有沒有比這更好的方式(2.5年後)?在我的網絡中,此方法每次都會引發異常。 – 2013-02-21 05:11:37