在 C 中,我可以将客户端套接字绑定(bind)到特定的本地地址和系统选择的端口。如果发生以下任一情况会发生什么?
- 机器的本地地址已更改
- 程序被移动到具有不同本地地址的主机
如果我在调用 connect() 后尝试绑定(bind)会发生什么?
最佳答案
嗯,一般来说,TCP套接字连接实际上是由源IP、源端口、目标IP、目标端口元组来标识的。如果说源 IP 不再有效,那么两端都无法从中恢复,并且目标主机可能直到超时后才会注意到。
另一方面,如果您尝试绑定(bind)到当时非本地的地址,则绑定(bind)系统调用应返回错误 (EADDRNOTAVAIL
)。
最后,重新绑定(bind)已连接的 TCP 套接字应该会导致错误,因为它没有任何意义。
关于c - 套接字如何处理本地地址更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52799343/