源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-11-04 23:26 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C#获取Windows进程监听的TCP/UDP端口实例
1、在Windows下用CMD netstat命令可以获得当前进程监听端口号的信息,如netstat -ano可以看到IP、port、状态和监听的PID。 那么可以执行CMD这个进程得到监听的端口号信息,C#代码如下:
[u]复制代码[/u] 代码如下:
//进程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();
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部