C#获取Windows进程监听的TCP/UDP端口实例
时间:2021-11-20 13:06:21
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();
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Java设计模式之Builder建造者模式
![](https://img.aspxhome.com/file/2023/0/68180_0s.png)
SpringBoot在一定时间内限制接口请求次数的实现示例
![](https://img.aspxhome.com/file/2023/2/63702_0s.png)
java自动生成编号的实现(格式:yyMM+四位流水号)
Spring注解@Scope原理及用法解析
SpringBoot整合Security安全框架实现控制权限
![](https://img.aspxhome.com/file/2023/3/65583_0s.png)
分享几个Java工作中实用的代码优化技巧
![](https://img.aspxhome.com/file/2023/0/59890_0s.webp)
微信随机生成红包金额算法java版
Java Apache common-pool对象池介绍
![](https://img.aspxhome.com/file/2023/8/63328_0s.png)
RocketMQ源码解析broker 启动流程
JAVA实现经典扫雷游戏的示例代码
![](https://img.aspxhome.com/file/2023/6/60686_0s.jpg)
详解Java中Iterable与Iterator用法
java使用websocket,并且获取HttpSession 源码分析(推荐)
Java之策略模式比较器案例讲解
分布式Netty源码分析EventLoopGroup及介绍
![](https://img.aspxhome.com/file/2023/9/70289_0s.png)
一文详解Java抽象类到底有多抽象
![](https://img.aspxhome.com/file/2023/8/62168_0s.png)
应用启动数据初始化接口CommandLineRunner和Application详解
![](https://img.aspxhome.com/file/2023/8/65608_0s.jpg)
android异步消息机制 源码层面彻底解析(1)
![](https://img.aspxhome.com/file/2023/8/85958_0s.jpg)
深入谈谈C#9新特性的实际运用
Java中的强引用,软引用,弱引用,虚引用的作用介绍
![](https://img.aspxhome.com/file/2023/1/58411_0s.png)
Jackson多态序列化图文详解
![](https://img.aspxhome.com/file/2023/1/69891_0s.jpg)