【端口占用】无法在地址[localhost]和端口[9005]上创建服务器关闭套接字(基本端口[9005]和偏移量[0])

简介: 一直提示端口占用怎么解决?

06-Nov-2021 10:24:46.078 严重 [main] org.apache.catalina.core.StandardServer.await 无法在地址[localhost]和端口[9005]上创建服务器关闭套接字(基本端口[9005]和偏移量[0])
java.net.BindException: Address already in use: bind
at java.base/sun.nio.ch.Net.bind0(Native Method)
at java.base/sun.nio.ch.Net.bind(Net.java:550)
at java.base/sun.nio.ch.Net.bind(Net.java:539)
at java.base/sun.nio.ch.NioSocketImpl.bind(NioSocketImpl.java:643)
at java.base/java.net.ServerSocket.bind(ServerSocket.java:396)
at java.base/java.net.ServerSocket.(ServerSocket.java:282)
at org.apache.catalina.core.StandardServer.await(StandardServer.java:584)
at org.apache.catalina.startup.Catalina.await(Catalina.java:864)
at org.apache.catalina.startup.Catalina.start(Catalina.java:810)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:342)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473)
06-Nov-2021 10:24:46.088 信息 [main] org.apache.coyote.AbstractProtocol.pause 暂停ProtocolHandler["http-nio-8081"]
06-Nov-2021 10:24:46.089 信息 [main] org.apache.catalina.core.StandardService.stopInternal 正在停止服务[Catalina]
06-Nov-2021 10:24:46.178 警告 [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Web应用程序[lyzy-0.0.1-SNAPSHOT]似乎启动了一个名为[logback-1]的线程,但未能停止它。这很可能会造成内存泄漏。线程的堆栈跟踪:[]
06-Nov-2021 10:24:46.184 信息 [main] org.apache.coyote.AbstractProtocol.stop 正在停止ProtocolHandler ["http-nio-8081"]
06-Nov-2021 10:24:46.214 信息 [main] org.apache.coyote.AbstractProtocol.destroy 正在摧毁协议处理器 ["http-nio-8081"]
QQ截图20211106103821.png

具体错误代码如上:这是在服务器上,我用了一个Tomcat端口号被占用的情况,我启动了另一个版本的tomcat,然后部署软件报如上错误,所以,在部署的时候一定看好报错端口号,然后使用以下经常用的命令进行查找。然后kill进程就成功了!

【一定一定看报错端口号!!!】

  1. 查看端口占用

在windows命令行窗口下执行:

netstat -aon|findstr "8080"

TCP 127.0.0.1:80 0.0.0.0:0 LISTENING 2448

端口“8080”被PID(进程号)为2448的进程占用。

查看端口“8080”被哪个应用占用,,继续执行下面命令:

tasklist|findstr "2448"

tomcat9.exe 2016 Console 0 16,064 K

  1. 关闭进程

2.1 按进程号关闭进程
taskkill /pid 2152

多个时格式为:

taskkill /pid 2152 /pid 1284

2.2 按进程名关闭进程
如要关闭notepad.exe,格式为:

taskkill /im notepad.exe

指定多个时格式为:

taskkill /im notepad.exe /im iexplorer.exe

如果是要关闭所有的,则使用通配符*,即:

taskkill /im *.exe

2.3 有提示的关闭进程
taskkill /t /im notepad.exe
taskkill /t /pid 2152

这个效果是提示后在使用者确定后关闭,有提示框。

2.4 强行终止进程
taskkill /f /im notepad.exe
taskkill /f /pid 2152

  1. 端口状态

3.1 LISTENING状态
FTP服务启动后首先处于侦听(LISTENING)状态。

3.2 ESTABLISHED状态
ESTABLISHED的意思是建立连接。表示两台机器正在通信。

3.3 CLOSE_WAIT
对方主动关闭连接或者网络异常导致连接中断,这时我方的状态会变成CLOSE_WAIT 此时我方要调用close()来使得连接正确关闭

3.4 TIME_WAIT
我方主动调用close()断开连接,收到对方确认后状态变为TIME_WAIT。TCP协议规定TIME_WAIT状态会一直持续2MSL(即两倍的分段最大生存期),以此来确保旧的连接状态不会对新连接产生影响。处于TIME_WAIT状态的连接占用的资源不会被内核释放,所以作为服务器,在可能的情况下,尽量不要主动断开连接,以减少TIME_WAIT状态造成的资源浪费。

目前有一种避免TIME_WAIT资源浪费的方法,就是关闭socket的LINGER选项。但这种做法是TCP协议不推荐使用的,在某些情况下这个操作可能会带来错误。

3.5 SYN_SENT状态
SYN_SENT状态表示请求连接,当你要访问其它的计算机的服务时首先要发个同步信号给该端口,此时状态为SYN_SENT,如果连接成功了就变为ESTABLISHED,此时SYN_SENT状态非常短暂。但如果发现SYN_SENT非常多且在向不同的机器发出,那你的机器可能中了冲击波或震荡波之类的病毒了。这类病毒为了感染别的计算机,它就要扫描别的计算机,在扫描的过程中对每个要扫描的计算机都要发出了同步请求,这也是出现许多SYN_SENT的原因。

参考部分文章:https://www.cnblogs.com/rainman/p/3457227.html

目录
相关文章
|
6月前
|
弹性计算 应用服务中间件 Linux
阿里云服务器开放端口完整图文教程
笔者近期开发完成的服务端程序部署在阿里云的ECS云服务器上面,一些应用程序配置文件需要设置监听的端口(如Tomcat的8080、443端口等),虽然通过CentOs 7系统的的「防火墙」开放了对应的端口号,任然无法访问端口号对应的应用程序,后面了解到原来还需要设置云服务器的「安全组规则」,开放相应的端口权限,服务端的接口才能真正开放。
790 1
|
6月前
|
弹性计算 运维 数据安全/隐私保护
云服务器 ECS产品使用问题之如何更改服务器的IP地址或端口号
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
6月前
|
网络协议 Linux Unix
面试官:服务器最大可以创建多少个tcp连接以及端口并解释下你对文件句柄的理解
面试官:服务器最大可以创建多少个tcp连接以及端口并解释下你对文件句柄的理解
161 0
面试官:服务器最大可以创建多少个tcp连接以及端口并解释下你对文件句柄的理解
|
5月前
|
缓存 NoSQL 网络安全
【Azure Redis 缓存】使用开源工具redis-copy时遇见6379端口无法连接到Redis服务器的问题
【Azure Redis 缓存】使用开源工具redis-copy时遇见6379端口无法连接到Redis服务器的问题
|
5月前
|
网络协议
【qt】TCP的监听 (设置服务器IP地址和端口号)
【qt】TCP的监听 (设置服务器IP地址和端口号)
309 0
|
6月前
|
存储 安全 网络安全
服务器设置了端口映射之后外网还是访问不了服务器
服务器设置了端口映射之后外网还是访问不了服务器
若依修改,若依部署在本地运行时的注意事项,后端连接了服务器,本地的vue.config.js要先改成localhost:端口号与后端匹配,部署的时候再改公网IP:端口号
若依修改,若依部署在本地运行时的注意事项,后端连接了服务器,本地的vue.config.js要先改成localhost:端口号与后端匹配,部署的时候再改公网IP:端口号
|
6月前
|
网络协议 安全 Linux
在IntelliJ IDEA中使用固定公网地址远程SSH连接服务器环境进行开发
在IntelliJ IDEA中使用固定公网地址远程SSH连接服务器环境进行开发
136 2
|
6月前
|
弹性计算 运维 Linux
云服务器 ECS产品使用问题之如何改变服务器地址
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
7月前
|
Java Android开发
Java Socket编程示例:服务器开启在8080端口监听,接收客户端连接并打印消息。
【6月更文挑战第23天】 Java Socket编程示例:服务器开启在8080端口监听,接收客户端连接并打印消息。客户端连接服务器,发送"Hello, Server!"后关闭。注意Android中需避免主线程进行网络操作。
126 4