我正在做一个项目,其中一个 Raspberry Pi 托管一个 python asyncore 服务器,一些 arduino 通过 LAN 连接到它。我们的服务器几乎没有错误,但是当出现问题并且服务器崩溃时,重新启动服务器时它会说地址正在使用中。我们对其进行了编码,这样,如果地址正在使用中,它就会不断重试,直到地址被释放为止,但这需要相当长的时间。
现在我听说您可以在 Linux 中编辑地址被释放之前的时间。 例如,在我的 macbook 上,套接字地址会在 10 秒后释放。 有人能指出我正确的方向吗?
最佳答案
尝试使用 shutdown 而不是 close 方法(如果是这种情况)执行立即释放资源:https://docs.python.org/2/library/socket.html#socket.socket.shutdown http://www.unixguide.net/network/socketfaq/2.6.shtml
此外,套接字调用中的以下设置可能会有所帮助 http://man7.org/linux/man-pages/man7/socket.7.html :
- SO_REUSEADDR
- SO_REUSEPORT
- SO_RCVTIMEO
- SO_SNDTIMEO
关于linux - 我可以减少使用时间的套接字地址吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46910493/