包含addressalreadyinuse的词条
Address already in use 怎么解决
端口冲突(如其它占用了这个端口或你用的上次非正常退出,这个端口没有正常释放),在cmd中输入命令:netstat -ano,查看所有端口的占用情况,找到占用端口8080的进程pid,然后在任务管理器中删除该进程,再重启。

Address already in use 这个错误怎么解决
1 问题原因是:
bind 普遍遭遇的问题是试图绑定一个已经在使用的端口。该陷阱是也许没有活动的套接字存在,但仍然禁止绑定端口(bind 返回 EADDRINUSE),它由 TCP 套接字状态 TIME_WAIT 引起。该状态在套接字关闭后约保留 2 到 4 分钟。在 TIME_WAIT 状态退出之后,套接字被删除,该地址才能被重新绑定而不出问题。
还有一种原因是你直接在终端下ctrl+z结束了服务器端 此
2 解决方案
通过setsockopt()函数可以解决,搜 地址已经被使用——Address already in use 有具体解决方案
当是第二种原因时
ps aux
再结束对应的进程
解决socket.error: [Errno 98] Address already in use问题
刚刚开始使用flask框架写了两个小程序。然后我先访问了第一个“Hello,Web”的小程序,运行通过,然后想看看第二个inputname的程序是不是写对,但是linux报错:
socket.error: [Errno 98] Address already in use
大概意思就是地址被占用。因为socket默认是不支持地址复用的。为什么程序跑完了端口还是被占用着?这个问题就要TCP连接的“四次挥手”。
我们可能都有听过TCP/IP中“三次握手,四次挥手”,前者我们可能会更加了解一点,后者就不知道是什么样子。我也是T_T,所以我决定弄懂它。
在TCP/IP终止连接的四次握手中,当最后的ACK回复发出后,有个 2MSL 的时间等待,MSL指一个片段在网络中最大的存活时间,这个时间一般是30秒,所以基本上过60秒后就可以重新连接!
为什么要等待2MSL?是因为在最后发出ACK回复后,发送方不能确认ACK是否被另一端正常收到,如果另一端没有收到ACK回复的话,将会在1MSL后再次发送FIN片段。所以说发送方等待2MSL时间,也就是刚好它发ACK回复和对方发送FIN片段的时间,如果此时间内都没有再次收到FIN片段的话,发送方就假设对方已经正常接收到了ACK回复,此时它就会正常关闭连接!
以上就解释了为什么会出现跑另一个程序时会出现地址占用的情况。
接下去就是解决方案:
如果并发连接请求过多的时候,即短时间内连接请求很多,系统自动释放已占用端口的时间还没有到,又有连接请求(可用的端口已经被用完),所以还会出现 Address already in use错误提示),就会产生大量的TIME_WAIT状态的连接。这种情况下就有必要调整下linux的TCP/IP内核参数,让系统更快的释放TIME_WAIT连接。对于并发连接量大的情况我们需要这样设置: