如果我的程序在套接字关闭之前崩溃,那么下次我运行时,我会收到一个看起来像这样的错误;
socket.error: [Errno 48] Address already in use
Run Code Online (Sandbox Code Playgroud)
更改端口可以解决问题.
有没有办法避免这种情况,为什么会发生这种情况(当程序退出时,套接字不应该被垃圾收集和关闭)?
eph*_*ent 23
使用.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)您的收听插座.
搜索这些术语将为您提供许多解释,说明为什么这是必要的.基本上,在第一个程序关闭后,操作系统会将先前的侦听套接字保持在关闭状态TIME_WAIT一段时间. SO_REUSEADDR说你想要使用相同的监听端口.