C#获取Windows进程监听的TCP/UDP端口实例

 更新时间:2013年11月20日 14:47:16   作者:  
本文介绍了C#获取Windows下某进程监听的TCP/UDP端口的方法,希望对您有所帮助。

1、在Windows下用CMD netstat命令可以获得当前进程监听端口号的信息,如netstat -ano可以看到IP、port、状态和监听的PID。
那么可以执行CMD这个进程得到监听的端口号信息,C#代码如下:

复制代码 代码如下:

//进程id

            int pid = ProcInfo.ProcessID;

           

            //存放进程使用的端口号链表

            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();

相关文章

  • C#实现根据字节数截取字符串并加上省略号的方法

    C#实现根据字节数截取字符串并加上省略号的方法

    这篇文章主要介绍了C#实现根据字节数截取字符串并加上省略号的方法,比较实用的功能,需要的朋友可以参考下
    2014-07-07
  • C#实现策略模式

    C#实现策略模式

    这篇文章介绍了C#实现策略模式的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • 详细聊聊如何在C#循环中捕获局部变量

    详细聊聊如何在C#循环中捕获局部变量

    这篇文章主要给大家介绍了关于如何在C#循环中捕获局部变量的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-09-09
  • C#判等对象是否相等的方法汇总

    C#判等对象是否相等的方法汇总

    这篇文章主要介绍了C#判等对象是否相等的方法汇总,非常实用,需要的朋友可以参考下
    2014-08-08
  • Unity实现图片生成灰白图的方法

    Unity实现图片生成灰白图的方法

    这篇文章主要为大家详细介绍了Unity实现图片生成灰白图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • 一文带你了解 C# DLR 的世界(DLR 探秘)

    一文带你了解 C# DLR 的世界(DLR 探秘)

    DLR 是 C#4.0 新引进来的概念,其主要目的就是为了动态绑定与交互。下面小编给大家带来一篇不错教程,一文带你了解 C# DLR 的世界,需要的朋友可以参考下
    2020-02-02
  • C#创建临时文件的方法

    C#创建临时文件的方法

    这篇文章主要介绍了C#创建临时文件的方法,涉及C#中Path.GetTempFileName方法获取与操作临时文件的使用技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • C# 中的"智能枚举"之如何在枚举中增加行为(示例代码)

    C# 中的"智能枚举"之如何在枚举中增加行为(示例代码)

    这篇文章主要介绍了C# 中的“智能枚举”之如何在枚举中增加行为(示例代码),智能枚举跟设计模式的意义一样,可以帮助您避免重复的代码,并提高代码的可读性和可维护性,需要的朋友可以参考下
    2023-05-05
  • 利用C#实现AOP常见的几种方法详解

    利用C#实现AOP常见的几种方法详解

    AOP面向切面编程(Aspect Oriented Programming),是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。下面这篇文章主要给大家介绍了关于利用C#实现AOP常见的几种方法,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09
  • C# 正则表达式进阶

    C# 正则表达式进阶

    这篇文章主要介绍了C# 正则表达式进阶,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02

最新评论