如题

解决方案 »

  1.   

    利用多线程来对每个IP逐个扫描。ComputerAddressInfo cai = new ComputerAddressInfo("192.168.1", 42, 53);Thread thScan = new Thread(new ThreadStart(cai.ScanComputers));
    thScan.Start();//... public class ComputerAddressInfo
    {
        private int startIP = 0;
        private int endIP = 0;
        private string ipPrefix = "";
        private ArrayList computerList = null;    public ComputerAddressInfo(string ipPrefix, int startIP, int endIP)
        {
            this.startIP = startIP;
            this.endIP = endIP;
            this.ipPrefix = ipPrefix;
            computerList = new ArrayList();
        }    public void ScanComputers()
        {
            for (int i = startIP; i <= endIP; i++)
            {
                string scanIP = ipPrefix + "." + i.ToString();
                IPAddress myScanIP = IPAddress.Parse(scanIP);
                IPHostEntry myScanHost = null;
                string[] arr = new string[2];            try
                {
                    myScanHost = Dns.GetHostByAddress(myScanIP);
                }
                catch
                {
                    continue;
                }            if (myScanHost != null)
                {
                    arr[0] = myScanHost.HostName;
                    arr[1] = scanIP;                computerList.Add(arr);
                }
            }
        }
    }