C#获取Windows进程监听的TCP/UDP端口实例_C#教程-查字典教程网
C#获取Windows进程监听的TCP/UDP端口实例
C#获取Windows进程监听的TCP/UDP端口实例
发布时间:2016-12-28 来源:查字典编辑
摘要:1、在Windows下用CMDnetstat命令可以获得当前进程监听端口号的信息,如netstat-ano可以看到IP、port、状态和监听...

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#教程学习
    编程开发子分类