从LAN中的主机名获取IP地址
我找到了很多关于如何通过IP地址获取主机名的示例,如何获取LAN中主机的IP地址?
试试这个
public static void DoGetHostAddresses(string hostname) { IPAddress[] ips; ips = Dns.GetHostAddresses(hostname); Console.WriteLine("GetHostAddresses({0}) returns:", hostname); foreach (IPAddress ip in ips) { Console.WriteLine(" {0}", ip); } }
我从http://msdn.microsoft.com/en-us/library/system.net.dns.gethostaddresses.aspx得到了这个
如果你想从你的电脑获得IP地址(V4),这是简单的代码。
将此库导入您的课程
using System.Net;
初始化并将这些变量声明为您的代码。 它们包含主机名,ipaddress和主机地址数组:
string HostName = Dns.GetHostName().ToString(); IPAddress[] IpInHostAddress = Dns.GetHostAddresses(HostName); string IPV4Address = IpInHostAddress[1].ToString(); //Default IPV4Address. This might be the ip address you need to retrieve string IPV6Address = IpInHostAddress[0].ToString(); //Default Link local IPv6 Address
打开命令提示符,只需输入“ipconfig”并按回车键。完成后,您可以检查字符串IPV4Address是否与我们电脑中的IPv4Address匹配。
只要您知道机器的名称,就可以使用Dns.GetHostAddresses
。 您的网络DNS应将其识别为LAN计算机并返回正确的IP。
使用Dns.GetHostEntry(hostname)而不是过时的Dns.GetHostAddresses。
以下是它如何做的一个很好的例子: http : //www.codeproject.com/Articles/854/How-To-Get-IP-Address-Of-A-Machine
您可以使用Windows管理类来执行此操作,它也适用于位于同一域中的远程计算机(但我不知道他们是否需要启用或禁用任何安全性或策略设置才能使其工作)。 例如:
public List GetAdapterList() { ManagementClass mgmt = new ManagementClass("Win32_NetworkAdapterConfiguration "); ManagementObjectCollection moc = mgmt.GetInstances(); List adapters = new List (); // Search for adapters with IP addresses foreach(ManagementObject mob in moc) { string[] addresses = (string[])mob.Properties["IPAddress"].Value; if (null == addresses) { continue; } NetworkAdapter na = new NetworkAdapter(); na.Description = (string) mob.Properties["Description"].Value; na.MacAddress = (string) mob.Properties["MACAddress"].Value; na.IPAddresses = addresses; adapters.Add(na); } return adapters; }
并且要访问远程计算机,请创建这样的管理类:
ManagementClass mgmt = new ManagementClass (\\\\servername\\root\\cimv2:Win32_NetworkAdapterConfiguration);
这种方法可能会获得比在DNS中注册的IP更多的IP。