日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#实现查找指定端口被哪个进程占用并处理进程及dos命令下操作

發布時間:2023/12/18 C# 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#实现查找指定端口被哪个进程占用并处理进程及dos命令下操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 檢查當前系統中8000端口是否正在被其它進程使用;

2. 如果8000端口正在被使用,就找出該進程,并強行結束。

3. 使用C#變成語言實現。

檢查8000端口在被哪一個進程所使用:

簡單的解決方案如下:

1. 在程序中啟動一個新的進程,該進程的執行文件為:CMD.EXE

2. 給該進程傳遞一個命令行參數:netstat -ano

3. 獲取該命令所返回的結果,并對其進行分析,找出端口為8000的進程ID(PID)

4. 根據PID找出該進程,可以對該進程進行任意的處理

代碼:

static void Main(string[] args) {
??? 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;
// 啟動CMD
??? pro.Start();
// 運行端口檢查命令
??? pro.StandardInput.WriteLine("netstat -ano");
??? pro.StandardInput.WriteLine("exit");
// 獲取結果
??? Regex reg = new Regex("\\s+", RegexOptions.Compiled);
string line = null;
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[1].EndsWith(":8000")||arr[1].Contains(":8000")) {
??????????????? Console.WriteLine("8000端口的進程ID:{0}", arr[4]);
int pid = Int32.Parse(arr[4]);
??????????????? Process pro8000 = Process.GetProcessById(pid);
// 處理該進程
break;
??????????? }
??????? }
??? }
??? pro.Close();
}

/*********************************

釋放對某端口的占用

釋放對某端口的占用

假如我們需要確定誰占用了我們的9050端口?

1、Windows平臺?

在windows命令行窗口下執行:?

1.查看所有的端口占用情況

C:\>netstat -ano

? 協議 ? ?本地地址 ? ? ? ? ? ? ? ? ? ? 外部地址 ? ? ? ? ? ? ? 狀態 ? ? ? ? ? ? ? ? ? PID

? TCP ? ?127.0.0.1:1434 ? ? ? ? 0.0.0.0:0 ? ? ? ? ? ? ?LISTENING ? ? ? 3236

? TCP ? ?127.0.0.1:5679 ? ? ? ? 0.0.0.0:0 ? ? ? ? ? ? ?LISTENING ? ? ? 4168

? TCP ? ?127.0.0.1:7438 ? ? ? ? 0.0.0.0:0 ? ? ? ? ? ? ?LISTENING ? ? ? 4168

? TCP ? ?127.0.0.1:8015 ? ? ? ? 0.0.0.0:0 ? ? ? ? ? ? ?LISTENING ? ? ? 1456

? TCP ? ?192.168.3.230:139 ? ? ?0.0.0.0:0 ? ? ? ? ? ? ?LISTENING ? ? ? 4

? TCP ? ?192.168.3.230:1957 ? ? 220.181.31.225:443 ? ? ESTABLISHED ? ? 3068

? TCP ? ?192.168.3.230:2020 ? ? 183.62.96.189:1522 ? ? ESTABLISHED ? ? 1456

? TCP ? ?192.168.3.230:2927 ? ? 117.79.91.18:80 ? ? ? ?ESTABLISHED ? ? 4732

? TCP ? ?192.168.3.230:2929 ? ? 117.79.91.18:80 ? ? ? ?ESTABLISHED ? ? 4732

? TCP ? ?192.168.3.230:2930 ? ? 117.79.91.18:80 ? ? ? ?ESTABLISHED ? ? 4732

? TCP ? ?192.168.3.230:2931 ? ? 117.79.91.18:80 ? ? ? ?ESTABLISHED ? ? 4732

2.查看指定端口的占用情況

C:\>netstat -aon|findstr "9050"

? 協議 ? ?本地地址 ? ? ? ? ? ? ? ? ? ? 外部地址 ? ? ? ? ? ? ? 狀態 ? ? ? ? ? ? ? ? ? PID

? TCP ? ?127.0.0.1:9050 ? ? ? ? 0.0.0.0:0 ? ? ? ? ? ? ?LISTENING ? ? ? 2016

P: 看到了嗎,端口被進程號為2016的進程占用,繼續執行下面命令: (也可以去任務管理器中查看pid對應的進程)

3.查看PID對應的進程

C:\>tasklist|findstr "2016"

?映像名稱 ? ? ? ? ? ? ? ? ? ? ? PID 會話名 ? ? ? ? ? ? ?會話# ? ? ? 內存使用

?========================= ======== ================

? tor.exe ? ? ? ? ? ? ? ? ? ? 2016 Console ? ? ? ? ? ? ? ? 0 ? ? 16,064 K?

P:很清楚吧,tor占用了你的端口。

4.結束該進程

C:\>taskkill /f /t /im tor.exe

也可以看到pid后,啟動任務管理器,選中“進程”標簽,點擊“查看”—“選擇列”,選中PID(進程標識符),這樣就可以看到每個進程的標識符,然后Cut掉相應的進程即可。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的C#实现查找指定端口被哪个进程占用并处理进程及dos命令下操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。