C#獲取Windows進(jìn)程監(jiān)聽的TCP/UDP端口實例
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
在Windows下用CMD netstat命令可以獲得當(dāng)前進(jìn)程監(jiān)聽端口號的信息,如netstat -ano可以看到IP、port、狀態(tài)和監(jiān)聽的PID。那么可以執(zhí)行CMD這個進(jìn)程得到監(jiān)聽的端口號信息,C#代碼如下: //進(jìn)程id
int pid = ProcInfo.ProcessID; //存放進(jìn)程使用的端口號鏈表 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(); 該文章在 2024/3/9 15:42:32 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |