【发布时间】:2021-05-12 05:44:50
【问题描述】:
我的系统,它是一个客户端尝试连接到(身份验证)服务器。所以到服务器的路由应该是可用的,我们尝试连接到 用于验证端口的服务器。我们有启动配置文件,该文件具有动态学习到服务器的路由的配置 并配置通过连接到服务器来验证端口。
启动配置在重启时使用。
当我重新启动系统并在重新启动时调用连接函数时,它有时会返回错误 ENETUNREACH,最初我认为这是因为 当连接被调用时,到服务器的路由还不可用,所以为了重现它,我总是删除了配置部分 学习到服务器的路由,令我惊讶的是,它只是有时可以重现。未复制时(连接返回成功) 我尝试配置到服务器的路由并与服务器开始通信
那么connect函数返回的错误ENETUNREACH究竟是什么时候? 为什么没有到服务器的路由可用时连接返回成功?
套接字类型是 SOCK_DGRAM setsockopt SO_REUSEADDR & SO_REUSEPORT 设置为 1
调试此问题的任何其他指针都会有所帮助。
【问题讨论】:
-
ENETUNREACH 表示没有找到路线。
-
@stark 这不正确。这将返回 ENOROUTETOHOST。 ENETUNREACH 表示未找到连接到已找到的路由的接口。