windows下連接埠佔用處理工具

來源:互聯網
上載者:User

標籤:getc   opened   else   gif   程式   tle   getchar   進程   tchar   

一、通用方法

經常,我們在啟動應用的時候發現系統需要的連接埠被別的程式佔用,筆者在最近使用tomcat時,老是會遇到這種連接埠佔用的問題,如何知道誰佔有了我們需要的連接埠,很多人都比較頭疼,以下是通用方法:

在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

以上轉自:http://www.iteye.com/topic/1117270

 

二、描述與運行

  儘管上述方法能夠解決這個問題,但是過於繁瑣,而且CMD下的那幾行命令實在難記住,筆者便寫了這個exe。這玩意的實現比較簡單,主要是調用了cstdlib庫中的system()函數,邏輯也十分的清楚。雖然比較簡單,但是感覺還是十分的實用,因此拿出來於大家分享。好吧,其實主要是給自己留個備份。

以下是筆者的運行:

  

三、原始碼

  以下是實現的原始碼(轉載請註明出處),一個需要注意的點是:windows 為所有進程和線程分配的 ID 都是 4 的倍數。

 1 #include<iostream> 2 #include<cstdio> 3 #include<cstdlib> 4 /* 5 #windows連接埠佔用處理工具 6 #大大維 7 #2017/6/23 8 */ 9 using namespace std;10 int main()11 {12     system("title windows連接埠佔用處理工具");//設定cmd視窗標題13     system("color 2B");14     char cmd1[64]="netstat -aon|findstr \"";15     char cmd2[64]="tasklist|findstr \"";16     char cmd3[64]="taskkill /f /t /im ";17     cout<<"請輸入被佔用的連接埠號碼:"<<endl;18     unsigned duankou=0;19     cin>>duankou;20     sprintf(cmd1,"%s%d\"",cmd1,duankou);21     system(cmd1);22 23     // windows 為所有進程和線程分配的 ID 都是 4 的倍數24     cout<<"請輸入連接埠佔用進程的PID(最後一列),或者直接結束(輸入非4的倍數,如1)";25     unsigned pid=1;26     cin>>pid;27     if(!(pid%4))28     {29         sprintf(cmd2,"%s%d\"",cmd2,pid);30         system(cmd2);31     }32     else33     {34         return 0;35     }36     cout<<"你想結束這個進程嗎?(y or n)"<<endl;37     char ch=‘n‘;38     cin>>ch;39     if(ch==‘y‘)40     {41         cout<<"請輸入進程名(第一列),或者直接結束(輸入0)"<<endl;42         char jingchengming[16];43         cin>>jingchengming;44         if(ch!=‘0‘)45         {46             sprintf(cmd3,"%s%s",cmd3,jingchengming);47             system(cmd3);48             cout<<"已經結束了該進程"<<endl;49         }50     }51     getchar();52     return 0;53 }
View Code

  另外,大家在關閉進程的時候要慎之又慎,免得關閉了一些不必要的進程,造成嚴重的後果。

 

windows下連接埠佔用處理工具

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.