检测端口可用性


        private int CheckPortUsing()
        {
            int port = 20000;
            bool isgoto = false;
        begin:
            Process process = new Process();
            process.StartInfo.FileName = "cmd.exe";    
            process.StartInfo.Verb = "runas";        //管理员启动
            process.StartInfo.CreateNoWindow = true; //不显示程序窗口
            process.StartInfo.UseShellExecute = false; //使用操作系统shell启动
            process.StartInfo.RedirectStandardOutput = true; //由调试程序获取输出信息
            process.StartInfo.RedirectStandardInput = true; //接受来自调试程序的输入信息
            process.StartInfo.RedirectStandardError = true; //重定向标准错误输出
            process.Start();

            process.StandardInput.WriteLine("netstat -ano|findstr " + port + " &exit");
            process.StandardInput.AutoFlush = true;

            string output = process.StandardOutput.ReadToEnd();

            foreach (var msg in output.Split(new[] { "TCP" }, StringSplitOptions.None))
            {
                if(msg.ToUpper().Contains("LISTENING") && !msg.ToUpper().Contains("UDP"))
                {
                    port += 1;
                    isgoto = true;
                    break;
                }
            }

            process.WaitForExit();
            process.Close();

            if (isgoto)
            {
                isgoto = false;
                goto begin;
            }
            Console.WriteLine(output);

            return port;
        }

posted on 2020-03-09 15:25  fanu  阅读(274)  评论(0)    收藏  举报

导航