在局域网中根据IP地址查找DNS主机名大家好。我写了一个程序,顺序扫描LAN的某些部分供计算机使用(将提供代码)。但是,当我运行这段代码时,它只返回运行它的计算机的DNS主机名。我研究过使用WMI,但我不能,因为我并不总是了解我找到的计算机。有没有其他方法可以找到本地计算机主机名?usingSystem;使用System.Net;使用System.Net.NetworkInformation;使用系统文本;命名空间CheckLocalNetwork{classPingCheck{publicstaticstringfullip;publicvoidCheckSequentialIP(){IPHostEntryIpEntry=Dns.GetHostEntry(fullip);pingpingSender=newPing();PingOptions选项=newPingOptions();options.DontFragment=true;字符串数据="a";byte[]buffer=Encoding.ASCII.GetBytes(数据);int超时=120;PingReplyreply=pingSender.Send(fullip,timeout,buffer,options);if(reply.Status==IPStatus.Success){Console.WriteLine("地址:{0}",reply.Address.ToString());Console.WriteLine("主机名:{0}",IpEntry.HostName);Console.WriteLine("往返时间:{0}",reply.RoundtripTime);Console.WriteLine("生存时间:{0}",reply.Options.Ttl);Console.WriteLine("不要分片:{0}",reply.Options.DontFragment);Console.WriteLine("缓冲区大小:{0}",reply.Buffer.Length);控制台.WriteLine("");}}staticvoidMain(string[]args){Console.WriteLine("回车搜索以192.168.1开头的ip地址");控制台.ReadLine();for(intendofip=1;endofip<101;endofip++){fullip="192.168.1."+Convert.ToString(endofip);PingCheckcheckfullip=newPingCheck();checkfullip.CheckSequentialIP();}控制台.ReadLine();在我的机器上按预期工作-即它返回被扫描机器的主机名。为了更深入地调查您的问题,您是否尝试过使用nslookup检查IP地址解析?MicrosoftWindows[版本6.1.7600]版权所有(c)2009MicrosoftCorporation。版权所有。C:UsersRob>nslookup192.168.0.5如果这没有返回计算机名称,可能是与代码无关的名称解析问题。如果这一切看起来都像IpEntry.Aliases,那么也可能值得枚举IpEntry.Aliases集合。这里有条目吗?它们有意义吗?最后-你的代码是在你的错误代码之上,还是一个“提炼”的例子?我问的原因是Dns.GetHostEntry的文档指出“当一个空字符串作为主机名传递时,此方法返回本地主机的IPv4地址。”我还注意到你在静态中持有“fullip”。如果这不是导致问题的确切代码,尤其是在多线程运行时,是否有可能在调用Dns.GetHostEntry之前未初始化“fullip”?我可能会离开,但我认为当我看到你的问题时,我认为值得让我大吃一惊:)[编辑:]-你对kdt的评论澄清了我误解的事情。我以为你说你总是找回本地机器的主机名,无论你“扫描”哪台机器-这是非常奇怪的行为。事实上,我认为你是说你只需要获取其他机器的IP地址(它们的IP地址),并且只需要本地主机名。忽略我关于线程和空参数的最后一点。这更容易解释——你的机器几乎肯定无法解析机器名——我希望我建议的nslookup测试也不会返回机器名。为了将这些IP解析为主机名,您的计算机需要一个包含这些计算机条目的DNS,或者将它们放在本地主机文件中;当你进行这个调用时,你的机器实际上并没有要求远程机器输入它的名字,所以它赢了;无需借助其通用名称解析路径即可找到它。它对我有用,因为我的本地DNS确实有我网络上所有机器的条目,将它们的主机名解析为IP地址,反之亦然。以上就是C#学习教程:从局域网中的IP地址查找所有DNS主机名共享的内容。如果对你有用,需要了解更多C#学习教程,希望大家多多关注---代表立场,如涉及侵权,请点击右侧联系管理员删除.如需转载请注明出处:
