无法在本地网络上找到所有计算机名称

时间:2016-05-16 08:58:05

标签: c# networking ip-address host subnet

我们正在尝试获取本地网络上所有机器的IP地址和主机名,我们有一个连接到本地网络的显示框(BrightSign框),我们希望获得有关该框的所有信息。我们可以找到它的ip地址,但无法获取主机名。因此,我们无法确定将哪个IP地址分配给该框。 (我们可以通过使用自己的程序来学习盒子的ip地址;但我们想要自动检测)

这里是我们在c#中使用的代码 `

    public void scan(string subnet)
    {
        Ping myping;
        PingReply reply;
        IPAddress addr;
        IPHostEntry host;


        for (int i = 1; i < 255; i++)
        {
            string subnetn = "." + i.ToString();
            myping = new Ping();
            //string data = "aa";
            //byte[] buffer = Encoding.ASCII.GetBytes(data);
            //PingOptions optionss = new PingOptions(64, true);
            int timeout = 1000;
            reply = myping.Send(subnet + subnetn);

            if (reply.Status == IPStatus.Success)
            {
                try {
                    addr = IPAddress.Parse(subnet+subnetn);
                    host = Dns.GetHostEntry(addr);
                    txtHosts.AppendText(subnet + subnetn + host.HostName.ToString()+"\n");                           
                }
                catch { 

                }
            }
        }

    }`

如果我们使用这个代码,系统可以检测到所有的IP但不是主机名属于电话和我提到的方框。 简而言之,我们需要在本地网络上拥有所有机器名称和IP地址。 所以,你们有没有想到问题是什么,我们可以做些什么来解决这个问题。我们做了一些研究并尝试了一些方法。我们尝试发送ping不能取主机名的ip地址,我们意识到如果机器的ttl设置为64,我们就不能取主机名,但是如果它的ttl是128,我们可以设法学习主机名,我也是调整ping设置来测试这个挑战,但我仍然有问题。

我期待听到您的回复。 谢谢大家。

1 个答案:

答案 0 :(得分:0)

计算机名称可以是DNS或NETBIOS或其他名称。我建议您查看NMAP,看看它能做些什么。如果您想模仿它,您可以询问具体要求。例如,获取DNS名称意味着查询DNS服务器,计算机不会仅使用ICMP ping的名称进行回复。如果计算机安全设置允许,您可以执行netbios查询,或使用WMI,或者如果您在域中,则查询域服务器。

我不知道brightsign是什么,但是没有法律规定设备必须有DNS名称,有些设备只使用IP地址就可以了。此外,没有法律规定设备必须响应ping或任何其他协议。