基本信息
源码名称:一监听tcp程序是否正常运行的代码
源码大小:2.41M
文件格式:.rar
开发语言:C#
更新时间:2022-02-24
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559

本次赞助数额为: 6 元 
   源码介绍

一监听tcp程序是否正常运行的代码

这是一个检测tcp服务是否正常运行的程序如果发现程序没有正常运行就把服务重启下。

  class Program
    {

      public   static   RedisMsgSp sp = new RedisMsgSp();
      private  static  Timer time = new Timer();
      private  static  string  applicationPath="";
        static void Main(string[] args)
        {
            string redisServerIp = PubClass.ReadValueByKey("RedisIp");
            int redisServerPort = int.Parse(PubClass.ReadValueByKey("RedisPort"));
            string strChannel = PubClass.ReadValueByKey("RedisChannel");
            applicationPath = PubClass.ReadValueByKey("applicationPath");
            //sp = new RedisMsgSp(redisServerIp, redisServerPort, strChannel);
            //sp.ReceiveMsg();
            //sp.mlCallback = new RedisMsgSp.SendEventHandler(getRedisMsg);


            time.Elapsed = new ElapsedEventHandler(MethodEvent);
            time.Interval = 3 * 1000;
            time.Start();

            Console.ReadLine();

        }
        public static int  errortime=0;

        private static  void MethodEvent(object source, System.Timers.ElapsedEventArgs e)
        {
            bool returnstate = false;
            string TcpServerIp = PubClass.ReadValueByKey("ListenIp");
            int TcpServerPort = int.Parse(PubClass.ReadValueByKey("ListenPort"));
           
           bool tcpState= TestConnection(TcpServerIp,TcpServerPort);
            if (tcpState == false)
            {
                Console.WriteLine("Tcp服务异常第" errortime "次");
                errortime ;
                if (errortime >= 5)
                {
                    Console.WriteLine("将要重启服务");
                    returnstate= reStartAProcess("HolterDataReceiver");
                    if (returnstate == true)
                    {
                        Console.WriteLine("Tcp 服务重启成功!");
                        errortime = 0;
                    }
                }

            }
            else
            {
                Console.WriteLine("Tcp服务正常");
            }
        }

        public static bool  reStartAProcess(string ProcessName)
        {
            bool returnState = false;
            Process[] myprocess = Process.GetProcessesByName(ProcessName);

            if (myprocess.Count() > 0)//判断如果存在
            {
                int processcount = myprocess.Count();
                for (int i = 0; i < processcount; i )
                {
                    myprocess[i].Kill();//关闭程序
                    Console.WriteLine(ProcessName i " 程序已经关闭");
                }

               returnState= startProcess();
            }
            else
            {
               returnState=  startProcess();

            }

            return returnState;
        }


        public static bool   startProcess()
        {
            bool returnState = false;
            try
            {
                Process newProcess = new Process();//创建一个新的进程
                ProcessStartInfo startInfo = new ProcessStartInfo();//启动进程时使用的集合
                                                                    //startInfo.FileName = Environment.CurrentDirectory "\\Release1\\a.exe";//要启动的应用程序
                startInfo.FileName = applicationPath;//要启动的应用程序
                startInfo.WindowStyle = ProcessWindowStyle.Normal;//启动应用程序时使用的窗口状态
                                                                  //startInfo.WorkingDirectory = Environment.CurrentDirectory "\\Release1\\";//要启动应用程序的路径
                newProcess.StartInfo = startInfo;//把启动进程的信息赋值给新建的进程
                newProcess.StartInfo.UseShellExecute = false;//是否使用操作系统shell执行该程序
                newProcess.Start();
                returnState = true;
            }
            catch(Exception ee)
            {
                //退出控制台程序

                returnState = false;
                Console.WriteLine(ee.Message);
            }

            return returnState;

        }
        public  static  void getRedisMsg(msgBox mb, string sourceType)
        {
            Console.WriteLine(mb.msg);
        }


        public static SimpleTcpClient client = new SimpleTcpClient();
        public static bool TestConnection(string host, int port)
        {

            bool returnValue = false;
            try
            {
                var ar = client.Connect(host, port);
                return ar._client.Connected;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                returnValue = false;
            }
            finally
            {
                client.Disconnect();
            }
            return returnValue;
        }



    }

.
├── App.config
├── ConsoleTestRediservice.csproj
├── Message.cs
├── Program.cs
├── Properties
│   └── AssemblyInfo.cs
├── PubClass.cs
├── RedisMsgSp.cs
├── SimpleTcpClient.cs
├── bin
│   ├── Debug
│   │   ├── ConsoleTestRediservice.exe
│   │   ├── ConsoleTestRediservice.exe.config
│   │   ├── ConsoleTestRediservice.pdb
│   │   ├── ServiceStack.Common.dll
│   │   ├── ServiceStack.Interfaces.dll
│   │   ├── ServiceStack.Redis.dll
│   │   └── ServiceStack.Text.dll
│   └── 监控服务是否正常程序
│       ├── ConsoleTestRediservice.exe
│       ├── ConsoleTestRediservice.exe.config
│       ├── ConsoleTestRediservice.pdb
│       ├── ServiceStack.Common.dll
│       ├── ServiceStack.Interfaces.dll
│       ├── ServiceStack.Redis.dll
│       └── ServiceStack.Text.dll
├── lib
│   ├── ServiceStack.Common.dll
│   ├── ServiceStack.Interfaces.dll
│   ├── ServiceStack.Redis.dll
│   ├── ServiceStack.Text.dll
│   ├── YJ.Core.dll
│   ├── YJ.Data.dll
│   ├── YJ.Utils.dll
│   ├── log4net.dll
│   └── ml_upload.dll
├── obj
│   └── Debug
│       ├── ConsoleTestRediservice.csproj.CopyComplete
│       ├── ConsoleTestRediservice.csproj.CoreCompileInputs.cache
│       ├── ConsoleTestRediservice.csproj.FileListAbsolute.txt
│       ├── ConsoleTestRediservice.csprojAssemblyReference.cache
│       ├── ConsoleTestRediservice.exe
│       ├── ConsoleTestRediservice.pdb
│       ├── DesignTimeResolveAssemblyReferencesInput.cache
│       ├── TempPE
│       ├── TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
│       ├── TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
│       └── TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
└── 好例子网_ConsoleTestRediservice.rar

8 directories, 42 files