加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python3 网络编程-socket错误OEError: [Errno 48] Address alrea

发布时间:2020-12-17 16:59:18 所属栏目:Python 来源:网络整理
导读:在TCP重启服务端会遇到 OEError: [Errno 48] Address already in use 问题原因: ????这个是由于你的服务端仍然存在四次挥手的time_wait状态在占用地址 ????(如果不懂,请深入研究 ????????1.tcp三次握手,四次挥手? ????????2.syn洪水攻击? ????????3.服务

在TCP重启服务端会遇到OEError: [Errno 48] Address already in use

问题原因:

????这个是由于你的服务端仍然存在四次挥手的time_wait状态在占用地址

????(如果不懂,请深入研究

????????1.tcp三次握手,四次挥手?

????????2.syn洪水攻击?

????????3.服务器高并发情况下会有大量的time_wait状态的优化方法)

解决方法代码示例:

????加入一条socket配置,重用ip和端口:

phone=socket(AF_INET,SOCK_STREAM)
phone.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)?#就是它,在bind前加
phone.bind(('127.0.0.1',8080))

????发现系统存在大量TIME_WAIT状态的连接,通过调整linux内核参数解决

vi?/etc/sysctl.conf

编辑文件,加入以下内容:
net.ipv4.tcp_syncookies?=?1net.ipv4.tcp_tw_reuse?=?1net.ipv4.tcp_tw_recycle?=?1net.ipv4.tcp_fin_timeout?=?30
?然后执行?/sbin/sysctl?-p?让参数生效。
?
net.ipv4.tcp_syncookies?=?1?表示开启SYN?Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;

net.ipv4.tcp_tw_reuse?=?1?表示开启重用。允许将TIME-WAIT?sockets重新用于新的TCP连接,默认为0,表示关闭;

net.ipv4.tcp_tw_recycle?=?1?表示开启TCP连接中TIME-WAIT?sockets的快速回收,默认为0,表示关闭。

net.ipv4.tcp_fin_timeout?修改系统默认的?TIMEOUT?时间

更多内容:

????python3:一个简单socket 服务端和客服端示例

????python3:一个简单并发socket 服务端和客服端示例

????python3 网络编程-网络协议理论

????python3 网络编程-socket理论

????python3 网络编程-socket错误OEError: [Errno 48] Address already in use

????python3 网络编程-socket中recv与recvfrom的区别


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读