我目前正在C#上为我的任务开发一个客户端 - 服务器桌面应用程序。我设法检索远程计算机的IP地址。我可以使用IP地址获取该远程计算机的主机名吗?
这是我的代码:
private static string GetMachineNameFromIPAddress(string ipAdress)
{
string machineName = string.Empty;
try
{
IPHostEntry hostEntry = Dns.GetHostEntry(ipAdress);
machineName = hostEntry.HostName;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
return machineName;
}
我将检索到的IP地址放入标签
var socketip = ((IPEndPoint)client.Client.RemoteEndPoint).Address.ToString();
ipLabel.Text = socketip;
但是当我尝试使用此代码显示它时,它没有出现
string CompName = GetMachineNameFromIPAddress(socketip);
listBox1.Items.Add("Computer Name: " + CompName);
任何人都知道为什么?
答案 0 :(得分:0)
DNS可能没有与该IP地址关联的主机名。如果您有权访问,请尝试在客户端上运行以下命令并使用DNS强制进行更新。以下是有关如何执行此操作的更多信息:Renew DNS client registration using the ipconfig command
ipconfig / registerdns
或者,您可以使用Microsoft的ARP实用程序,只使用MAC地址。这篇文章有助于该路线:Resolve IP Address And Host Name From MAC Address using C# and Windows ARP Utility