我有一个多线程Linux服务器,它有许多同时连接(每个线程2个连接),在响应客户端时必须绑定到公共IP地址。有时,绑定UDP套接字时出现EADDRINUSE
错误,即使我的日志指示套接字最后一次绑定到同一地址/端口并且名为shutdown()
并且{{1套接字是在30分钟之前。
此外,我在这些UDP套接字上设置了close()
,SO_REUSEADDR
和SO_REUSEPORT
(但不是那些自动绑定到本地地址/端口的套接字)。使用这些选项,即使有一些其他UDP套接字仍然绑定到本地地址上的同一端口,绑定也不会按IP_TRANSPARENT
失败,但显然确实会发生。
我找不到这种行为的解释。
SO_REUSEADDR