一、通用方法

经常,我们在启动应用的时候发现系统需要的端口被别的程序占用,笔者在最近使用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 的倍数。

 #include<iostream>
#include<cstdio>
#include<cstdlib>
/*
#windows端口占用处理工具
#作者:大大维
#2017/6/23
*/
using namespace std;
int main()
{
system("title windows端口占用处理工具");//设置cmd窗口标题
system("color 2B");
char cmd1[]="netstat -aon|findstr \"";
char cmd2[]="tasklist|findstr \"";
char cmd3[]="taskkill /f /t /im ";
cout<<"请输入被占用的端口号:"<<endl;
unsigned duankou=;
cin>>duankou;
sprintf(cmd1,"%s%d\"",cmd1,duankou);
system(cmd1); // windows 为所有进程和线程分配的 ID 都是 4 的倍数
cout<<"请输入端口占用进程的PID(最后一列),或者直接结束(输入非4的倍数,如1)";
unsigned pid=;
cin>>pid;
if(!(pid%))
{
sprintf(cmd2,"%s%d\"",cmd2,pid);
system(cmd2);
}
else
{
return ;
}
cout<<"你想结束这个进程吗?(y or n)"<<endl;
char ch='n';
cin>>ch;
if(ch=='y')
{
cout<<"请输入进程名(第一列),或者直接结束(输入0)"<<endl;
char jingchengming[];
cin>>jingchengming;
if(ch!='')
{
sprintf(cmd3,"%s%s",cmd3,jingchengming);
system(cmd3);
cout<<"已经结束了该进程"<<endl;
}
}
getchar();
return ;
}

  另外,大家在关闭进程的时候要慎之又慎,免得关闭了一些不必要的进程,造成严重的后果。

windows下端口占用处理工具的更多相关文章

  1. windows查看端口占用 windows端口占用 查找端口占用程序 强制结束端口占用 查看某个端口被占用的解决方法 如何查看Windows下端口占用情况

    windows下查询端口占用情况 ,强制结束端口占用程序 查询8080端口被那个程序占用 如何强制结束windows下端口占用情况? 下面操作在win10下 在控制台执行命令   1.列出所有端口的情 ...

  2. windows下端口占用解决方法-查看和杀死占用端口进程

    在Windows下启动程序时有时会遇到端口被占用的情况,由于一个端口同时只能运行一个进程,所以要想启动新的程序就要先把占用该端口的进程给kill掉,具体的命令分为以下三步, 以杀死占用了80端口的进程 ...

  3. 如何查看Windows下端口占用

    查看端口占用的PID进程号 C:\Users\yan>netstat -ano | findstr "8888" 查看是哪个进程或者程序占用了17840端口 C:\Users ...

  4. Windows下端口占用查看

    假如我们需要确定谁占用了我们的80端口 1.Windows平台在windows命令行窗口下执行:C:\>netstat -aon|findstr "80" TCP     1 ...

  5. 如何查看Windows下端口占用情况

    开始---->运行---->cmd,或者是window+R组合键,调出命令窗口  输入命令:netstat -ano,列出所有端口的情况.在列表中我们观察被占用的端口,比如是49157,首 ...

  6. windows下端口占用解决办法,解决命令

    1.netstat -aon|findstr "8183"  可以看到listener 对应的端口id 2.taskkill /pid {查询出来对应的id值}  /f

  7. windows下端口占用

    1,netstat -ano | findstr 1235 2,taskkill /pid 9772 /f

  8. Windows系统端口占用情况检查脚本

    写了一段检查Windows下端口占用情况的脚本,代码如下: function checkPid($result,$port){ $port = $port.split(":")[1 ...

  9. windows端口占用处理工具

    一.描述 笔者在最近使用tomcat时,老是会遇到这种端口占用的问题,便写了这个小的exe,用于解决windows下的端口占用问题. 好吧,其实是我实在记不住CMD下的那几行命令.这玩意的实现比较简单 ...

随机推荐

  1. 在Mac os 10.11 下编译Berkeley caffe

    安装各种补丁和组件,缺啥装啥. python 采用 2.7.13 最新版. 安装工具  homebrew , pip 很繁琐,但是没难度. 由于本人macbook pro不支持CUDA,所以不用安装. ...

  2. win2012服务器配置ftp

    1.打开服务器管理器,选择添加角色和功能 2.按照下述向导,安装IIS 选择iis 勾选FTP服务器 3.添加新用户 用户密码按照下图勾选,创建用户 4.IIS配置FTP站点 指定用户访问,并授权,点 ...

  3. React文档(十九)不使用ES6

    通常你会将一个React组件定义成一个普通的js类: class Greeting extends React.Component { render() { return <h1>Hell ...

  4. orangepi one AP模式配置

    前两天买了一块orangepi one开发板,目的是做个局域网共享目录,具体共享协议用samba:这块板子有两个网卡,一个有线一个无线:有线主要用来ssh登陆调试,修改配置. 首先下载armbian的 ...

  5. 小程序一个大盒子里面的盒子内容居中对其显示wxss写法

    对小程序研究感兴趣的可加(交流QQ群:604788754)入群联系群主可得到小程序教学资源. 这个案例只是想展示效果,内容部分未进行for循环绑定处理: WXML: <view class=&q ...

  6. Ubuntu系统建立交叉编译环境

    飞凌 FET6818核心板 解压编译器: tar zxvf arm-cortex_a9_eabi-4.7-eglibc-2.18.tar.gz  -C/opt 设置默认编译环境: vi /etc/pr ...

  7. fastjson对象转为json字符串日期格式变为时间戳问题

    今天尝试将map集合转为json对象时遇到一个问题.map中的value为日期格式如"2019-03-01",在使用JSONObject.toJSON(map).toString( ...

  8. java 8 Lambda

    警告: 初学者随笔, 请关闭此网页, 以免浪费你的时间

  9. Oralce数据库的优化

    Oralce数据库的优化(面试必问) (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 ...

  10. java第六次课后作业

    class Check{ public boolean validate(String name, String password){ if(name.equals("shenhaochen ...