如果我在Linux中调用connect(),会发生什么



当我在linux中调用connect((时,我看到套接字绑定到了与默认网关相关的接口的ip。我的意思是,当调用connect((时,似乎在内部调用bind((。它真的调用bind((吗?我用udp插座试过这个

另外,如果我调用connect((,它是否总是检查路由表以知道目的ip是有效的?

当调用connect((时,似乎在内部调用bind((。它真的调用bind((吗?

是的,connect()将把套接字bind()连接到本地接口和临时端口,但前提是套接字尚未绑定。

此外,如果我调用connect((,它是否总是检查路由表以知道目标ip是有效的?

不适用于UDP。UDP套接字上的connect()仅为套接字分配一个静态对等IP/端口,仅此而已。如果您尝试在连接的UDP套接字上使用send(),但目的地无效,则数据包将不会传递,并且send()可能返回错误代码。

最新更新