当我在linux中调用connect((时,我看到套接字绑定到了与默认网关相关的接口的ip。我的意思是,当调用connect((时,似乎在内部调用bind((。它真的调用bind((吗?我用udp插座试过这个
另外,如果我调用connect((,它是否总是检查路由表以知道目的ip是有效的?
当调用connect((时,似乎在内部调用bind((。它真的调用bind((吗?
是的,connect()
将把套接字bind()
连接到本地接口和临时端口,但前提是套接字尚未绑定。
此外,如果我调用connect((,它是否总是检查路由表以知道目标ip是有效的?
不适用于UDP。UDP套接字上的connect()
仅为套接字分配一个静态对等IP/端口,仅此而已。如果您尝试在连接的UDP套接字上使用send()
,但目的地无效,则数据包将不会传递,并且send()
可能返回错误代码。