linux - 我可以减少使用时间的套接字地址吗?

标签 linux sockets raspberry-pi

我正在做一个项目,其中一个 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/

相关文章:

java - 在单个上下文切换中将相同的 tcp 消息发送到多个目的地/主机

linux - 无法从 SSH 启动 MonoGame,但可以从 GUI 启动

javascript - 使用 node.js (childProcess) 运行 shell 脚本

linux - 我如何在不同的 X11 session 中打开一个窗口?

sockets - Opera-Mini 使用什么协议(protocol)进行 Socket 通信?

linux - 使用第三方 api 连接到 ec2 实例时出错

c# - 如何在 C# 应用程序中取消异步发送套接字

linux - 如何使用WD My Book Live共享作为Raspberry PI owncloud服务器数据目录?

android - TrafficStats 特定应用-特定网络接口(interface)

python - 用于 Linux 的 Python 中的终端窗口关闭事件处理程序