(转)使用Ping获得局域网机器信息

实际编程中会遇到查找局域网机器的情况,这个时候ping命令对我们帮助比较大,一般来说,都是在命令行中输入“ping XXX -t”,下面的方法是在C#编码中使用Ping。

原文地址:http://zhidao.baidu.com/link?url=Hrfa4uVm_QD_l9VnrY4ksK4yjTWwaS1L7ApRcLmCbMXnskXD3lUm0TIhASFIsuAnt-JKc9NpzAYYYAdA0DbtBxCDNI9dMsKp0XBLb5CYTDm

             list<string> ipList=new list<string>();

          public void getIP()
          {
             
            //获取本地机器名 
            string _myHostName = Dns.GetHostName();
            //获取本机IP 
            string _myHostIP = Dns.GetHostEntry(_myHostName).AddressList[0].ToString();
            //截取IP网段
            string ipDuan = _myHostIP.Remove(_myHostIP.LastIndexOf('.'));
            //枚举网段计算机
            for (int i = 1; i <= 255; i++)
            {
                Ping myPing = new Ping();
                myPing.PingCompleted += new PingCompletedEventHandler(_myPing_PingCompleted);
                string pingIP = ipDuan + "." + i.ToString();
                myPing.SendAsync(pingIP, 1000, null);//此处为异步方式,也可以采用send方法的同步方式
                 
            }
            }
            void _myPing_PingCompleted(object sender, PingCompletedEventArgs e)
        {
            if (e.Reply.Status == IPStatus.Success)
            {
                ipList.Add(e.Reply.Address.ToString());
            }
        }
     实际测试中,空IP一般需要实际0.5S左右,而有主机的IP一般检测时间不到0.1S,这样254个可能中,实际时间120左右。
上一篇:CentOS 6 UNEXPECTED INCONSISTENCY RUN fsck MANUALLY


下一篇:C++遍历目录,并把目录里超过7天的文件删除(跨平台windows&linux)