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

C#獲取本地應(yīng)用進(jìn)程和端口號(hào)的實(shí)現(xiàn)示例

 更新時(shí)間:2025年07月07日 09:25:59   作者:愛玩厄加特的瑞文  
本文介紹了通過(guò)C#編程調(diào)用cmd.exe執(zhí)行netstat命令獲取進(jìn)程信息,包括使用參數(shù)如-a、-n和-o,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

后臺(tái)調(diào)用命令行程序,通過(guò)分析netstat命令的返回結(jié)果獲取進(jìn)程信息,主要使用的參數(shù)包括-a(顯示所有連接和偵聽端口)、-n(以數(shù)字形式顯示地址和端口號(hào))、-o(顯示擁有的與每個(gè)連接關(guān)聯(lián)的進(jìn)程 ID),其實(shí)-b(顯示在創(chuàng)建每個(gè)連接或偵聽端口時(shí)涉及的可執(zhí)行程序)也可以用,但是它的返回結(jié)果沒有和前幾個(gè)參數(shù)在一行,分析起來(lái)比較麻煩,就沒有用。另外,如果是查詢端口,還可以在命令行中附帶findstr命令從netstat命令的返回結(jié)果中篩選。最終的示例代碼如下:

List<SearchedProcessInfo> searchResult=new List<SearchedProcessInfo>();
    Process pro = null;

    try
    {
        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(String.IsNullOrWhiteSpace(txtPPort.Text)?"netstat -ano":String.Format("netstat -ano | findstr :{0}", txtPPort.Text));
        pro.StandardInput.WriteLine("exit");
        Regex reg = new Regex("\\s+", RegexOptions.Compiled);
        string line = null;
        while ((line = pro.StandardOutput.ReadLine()) != null)
        {
            line = line.Trim();

            if (!line.StartsWith("TCP") && !line.StartsWith("UDP"))
            {
                continue;
            }
            Console.WriteLine(line);

            line = line.Trim();
            SearchedProcessInfo info = new SearchedProcessInfo();
            line = reg.Replace(line, ",");
            string[] arr = line.Split(',');
            string soc = arr[1];
            int pos = soc.LastIndexOf(':');
            info.UsePort = soc.Substring(pos + 1);
            info.Protocol = arr[0];

            if (line.StartsWith("TCP"))
            {
                info.ProcessID = Convert.ToInt32(arr[4]);
                info.Status = arr[3];
            }
            else
            {
                info.ProcessID = Convert.ToInt32(arr[3]);
            }
            try
            {
                Process pTmp = Process.GetProcessById(Convert.ToInt32(info.ProcessID));
                info.ProcessName = pTmp != null ? pTmp.ProcessName : String.Empty;
            }
            catch(Exception exx)
            {
                info.ProcessName = String.Empty;
            }            
            
            searchResult.Add(info);
        }
        ...

    }
    catch (Exception exp)
    {
        MessageBox.Show(exp.Message);
    }
    finally
    {
        if(pro != null)
        {
            pro.Close();
        }
    }

到此這篇關(guān)于C#獲取本地應(yīng)用進(jìn)程和端口號(hào)的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)C#獲取進(jìn)程和端口號(hào)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論