TIME_WAIT状态下,修改socket选项后,bind端口会失败

简介:

TIME_WAIT状态下,修改socket选项后,bind端口会失败,即使使用的是SO_REUSEADDR或者SO_REUSEPORT模式

*********************************

tcp        0      0 127.0.0.1:81                127.0.0.1:56850             TIME_WAIT   

*********************************

tcp        0      0 127.0.0.1:81                127.0.0.1:56850             TIME_WAIT   

*********************************

tcp        0      0 127.0.0.1:81                127.0.0.1:56850             TIME_WAIT   

*********************************

tcp        0      0 127.0.0.1:81                127.0.0.1:56850             TIME_WAIT

如上,进程退出后,只要还有TIME_WAIT存在(2MSL后才消失),切换socket选项去bind端口都不会成功,比如SO_REUSEADDR和SO_REUSEPORT两个模式变化切换。

解决方法就是把tcp_timestamp,tcp_reuse,tcp_recycle三个变量全部设置为1,这样TIME_WAIT在进程退出后会迅速回收。



本文转自 zhegaozhouji 51CTO博客,原文链接:http://blog.51cto.com/1038741/1939136

相关文章
|
7月前
|
Python
Python网络编程基础(Socket编程)绑定地址和端口
【4月更文挑战第9天】在UDP服务器编程中,我们首先需要创建一个UDP套接字,然后绑定一个本地地址和端口,以便客户端可以通过这个地址和端口与我们的服务器进行通信。下面,我们将详细讲解如何绑定地址和端口。
|
7月前
|
算法 Unix
socket套接字选项getsockopt&setsockopt
setsockopt()函数用于任意类型、任意状态套接口的设置选项值。尽管在不同协议层上存在选项,但本函数仅定义了最高的“套接口”层次上的选项。在Unix网络编程中通常用到getsockopt和setsockopt两个函数来获取和设置套接口的选项。getsockopt()函数用于获取任意类型、任意状态套接口的选项当前值,并把结果存入optval。
100 0
|
网络协议 Unix Linux
计算机网络 套接字函数 | socket、bind、listen、accept、connect
计算机网络 套接字函数 | socket、bind、listen、accept、connect
126 0
|
4月前
|
缓存 网络协议 算法
提高服务端性能的几个socket选项
提高服务端性能的几个socket选项
146 3
|
3月前
|
监控 网络协议 数据库连接
Python3 监控端口:使用 socket 库
Python3 监控端口:使用 socket 库
50 0
|
3月前
|
监控 网络协议 数据库连接
Python3 监控端口:使用 socket 库
Python3 监控端口:使用 socket 库
53 0
|
3月前
|
存储 网络协议 安全
C语言 网络编程(五)Socket和端口
Socket 是 TCP/IP 五层网络模型中应用层的编程接口,用于实现不同主机间应用程序的双向通信。它作为网络通信的端点,连接应用层与网络协议栈,提供可靠的流式或非流式数据传输服务。Socket 包括流式(SOCKET_STREAM)、数据报(SOCK_DGRAM)和原始套接字(SOCK_RAW)三种类型,分别适用于不同场景。通过 IP 地址和端口号,Socket 能准确识别并转发数据包至指定进程。端口号分为知名端口(1-1023)、注册端口(1024-49151)和动态端口(49152-65535),确保数据准确交付。
|
6月前
|
Java Android开发
Java Socket编程示例:服务器开启在8080端口监听,接收客户端连接并打印消息。
【6月更文挑战第23天】 Java Socket编程示例:服务器开启在8080端口监听,接收客户端连接并打印消息。客户端连接服务器,发送"Hello, Server!"后关闭。注意Android中需避免主线程进行网络操作。
109 4
|
7月前
|
网络协议 Java
Java中如何使用Socket类检测端口是否存在
Java中如何使用Socket类检测端口是否存在
132 4
|
7月前
|
安全 程序员