一、概述
在学习进程间通讯的时候,我们知道有一种通讯方式叫做socket。对于跨主机之间的进程通讯,这种方式更为常见,比如常见的基于B/S架构的web服务就是这种通讯方式的一个常见应用,客户端通过 IP+PORT 找到位于服务端上监听此端口的进程,从而与该进程进行数据通讯。再如我们常见的MySQL数据库程序,通常我们会先安装mysql应用程序,设置其启动时监听的端口,这样,当我们启动这个程序的时候,mysql服务进程就会绑定相关的端口(测试的时候常用的是3306端口),进而可以接收来自于这个端口的请求,进行相关的处理,反馈。对于这类程序,有时候会出现由于端口被占用导致启动失败的情况,比如电脑上的一个进程已经绑定了3306端口,这个时候如果再启动mysql程序,就会出现端口被占用的错误。这个时候简单一些的处理方式是可以修改mysql使用的端口号,或者结束占用3306端口的进程。
二、查看端口的占用情况
打开电脑上面的一个终端,如cmd(开始-运行-cmd),键入 netstat -ano 命令,这时候就可以查看所有的端口占用情况,如下图所示:
从图中可以看到 3306 被 pid为3608的进程占用。如果知道被占用端口号的话,也可以直接使用 netstat -ano|findstr “3306” 命令,如下图所示:
接着,我们可以使用 tasklist 命令查看pid为3608的进程到底是什么,命令:tasklist|findstr 3608 ,如下图所示:
可以看到pid为3608的进程是mysqld,这时候如果需要结束此进程,可以使用:taskkill /f /t /im 进程名称 命令,也可以在任务管理器中结束。
三 总结
1,socket是一种进程间通讯的方式,使用的话需要知道进程所在的主机IP和绑定的PORT;
2,查看端口被某一进程占用可以使用 netstat -ano|findstr “port” 命令,此命令可以找到占用进程的pid,然后使用 tasklist|findstr “pid” 找到进程名称,然后使用 taskkill /f /t /im 进程名称 结束进程。