C# 模仿PING操作,监控主机是否可以通信

 

以下是C#代码,可以直接复制使用。

using System;

using System.Collections.Generic;

using System.Text;

using System.Management;



namespace PingMock

{

    class MockerClass

    {

        private static Object thisobject = new Object();

        public void Ping(string Host)

        {

            //string rtn = "";

            

            ManagementObjectSearcher mos = null;

            ManagementObjectCollection moc = null;

            LogClass writeLog = new LogClass();



            try

            {

                string searchString = "select * from win32_PingStatus where Address = '" + Host.Trim() + "'";



                mos = new ManagementObjectSearcher(searchString);

                moc = mos.Get();



                foreach (ManagementObject mo in moc)

                {

                    object obj = mo.Properties["StatusCode"].Value;



                    if (obj == null)

                    {

                        lock (thisobject)

                        {

                            writeLog.WriteLogFile(Host + " PING 执行失败。可能是主机未知。");

                        }

                        //return Host+" PING 执行失败。可能是主机未知。";

                    }

                    else

                    {

                        if (obj.ToString().Trim() == "0")

                        {

                            //rtn = "OK";

                            break;

                        }

                        lock (thisobject)

                        {

                            writeLog.WriteLogFile(Host + " PING 不通!");

                        }

                    }

                }

            }

            catch (Exception ex)

            {

                writeLog.WriteLogFile(Host + " PING 不通,可能原因为:" + ex.Message);

                //rtn = Host+" PING 不通,可能原因为:"+ ex.Message;

            }

            finally

            {

                if (moc != null) moc.Dispose();

                if (mos != null) mos.Dispose();

            }



            //return rtn;

        } 

    }

}

  

可以修改城自己需要的形式。我这个是不返回结果,直接记录日志中。

 

 

 

 

 

 

 

你可能感兴趣的:(ping)