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

标签 c sockets

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

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

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

最佳答案

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

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

最后,重新绑定(bind)已连接的 TCP 套接字应该会导致错误,因为它没有任何意义。

关于c - 套接字如何处理本地地址更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52799343/

相关文章:

c - 如何使用 MPI_File_write_at_all 将不同数量的行从包括主节点在内的各种处理器写入文件中?

java - 在同一台机器上调试多个Socket IP地址

php - 在Windows 7命令行窗口中通过PHP套接字发送JSON数据

php - 如何获取函数 stream_get_line 和 fgets 的错误?

c - 在c中 float 奇怪的不精确错误

使用数组参数从 C 调用 Rust 方法

python - 操作系统错误 : [Errno 22] Invalid argument in python3 socket

sockets - 使用 setsockopt() 将 dscp 值设置为套接字

c - 如何在数组内打印二进制数?

c - 访问设备的寄存器 i2c