C 套接字如何处理本地地址更改?

C 套接字如何处理本地地址更改?,c,sockets,C,Sockets,在C语言中,我可以将客户端套接字绑定到特定的本地地址和系统选择的端口。如果发生以下情况,会发生什么 机器的本地地址已更改 程序被移动到具有不同本地地址的主机 如果我在调用connect()之后尝试绑定会发生什么呢?一般来说,TCP套接字连接实际上是由源IP、源端口、目标IP、目标端口元组标识的。如果说源IP不再有效,那么两端都无法从中恢复,并且目标主机可能在超时后才会注意到 另一方面,如果您当时试图绑定到非本地地址,则绑定系统调用应返回错误(EADDRNOTAVAIL) 最后,重新绑定已连接的T

在C语言中,我可以将客户端套接字绑定到特定的本地地址和系统选择的端口。如果发生以下情况,会发生什么

  • 机器的本地地址已更改
  • 程序被移动到具有不同本地地址的主机

  • 如果我在调用connect()之后尝试绑定会发生什么呢?

    一般来说,TCP套接字连接实际上是由源IP、源端口、目标IP、目标端口元组标识的。如果说源IP不再有效,那么两端都无法从中恢复,并且目标主机可能在超时后才会注意到

    另一方面,如果您当时试图绑定到非本地地址,则绑定系统调用应返回错误(
    EADDRNOTAVAIL


    最后,重新绑定已连接的TCP套接字将导致错误,因为这没有任何意义。

    使用本地主机环回IP地址“127.0.0.1”和端口号组合来创建套接字。因为环回地址不变。[链接]()“移动到主机”是什么意思?@PKumarasamy:“使用本地主机环回IP地址“127.0.0.1”,这意味着您只能与本地计算机上的任何设备通信,而不能与网络中的任何设备通信。在大多数用例中不是很有用。