欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#獲取Windows進(jìn)程監(jiān)聽的TCP/UDP端口實(shí)例

 更新時間:2013年11月20日 14:47:16   作者:  
本文介紹了C#獲取Windows下某進(jìn)程監(jiān)聽的TCP/UDP端口的方法,希望對您有所幫助。

1、在Windows下用CMD netstat命令可以獲得當(dāng)前進(jìn)程監(jiān)聽端口號的信息,如netstat -ano可以看到IP、port、狀態(tài)和監(jiān)聽的PID。
那么可以執(zhí)行CMD這個進(jìn)程得到監(jiān)聽的端口號信息,C#代碼如下:

復(fù)制代碼 代碼如下:

//進(jìn)程id

            int pid = ProcInfo.ProcessID;

           

            //存放進(jìn)程使用的端口號鏈表

            List<int> ports = new List<int>();

 

            Process pro = new Process();

            pro.StartInfo.FileName = "cmd.exe";

            pro.StartInfo.UseShellExecute = false;

            pro.StartInfo.RedirectStandardInput = true;

            pro.StartInfo.RedirectStandardOutput = true;

            pro.StartInfo.RedirectStandardError = true;

            pro.StartInfo.CreateNoWindow = true;

            pro.Start();

            pro.StandardInput.WriteLine("netstat -ano");

            pro.StandardInput.WriteLine("exit");

            Regex reg = new Regex("\\s+", RegexOptions.Compiled);

            string line = null;

            ports.Clear();

            while ((line = pro.StandardOutput.ReadLine()) != null)

            {

                line = line.Trim();

                if (line.StartsWith("TCP", StringComparison.OrdinalIgnoreCase))

                {

                    line = reg.Replace(line, ",");

                    string[] arr = line.Split(',');

                    if (arr[4] == pid.ToString())

                    {

                        string soc = arr[1];

                        int pos = soc.LastIndexOf(':');

                        int pot = int.Parse(soc.Substring(pos + 1));

                        ports.Add(pot);

                    }

                }

                else if (line.StartsWith("UDP", StringComparison.OrdinalIgnoreCase))

                {

                    line = reg.Replace(line, ",");

                    string[] arr = line.Split(',');

                    if (arr[3] == pid.ToString())

                    {

                        string soc = arr[1];

                        int pos = soc.LastIndexOf(':');

                        int pot = int.Parse(soc.Substring(pos + 1));

                        ports.Add(pot);

                    }

                }

            }

            pro.Close();

相關(guān)文章

最新評論