绑定到零地址的意义是什么?

我在connect()调用中看到EADDRNOTAVAIL错误。 我深入地发现,套接字的命名是由超过零的 IP地址完成的。 请参阅以下两个电话成功的地方: –

 setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (char *)&y, sizeof(y)); /* y is int with value 1 */ bind(s, (struct sockaddr *)lockaddr, sizeof(rtinetaddr_tp)); 

哪里

 lockaddr={.sin_family=2, .sin_port=0, .sin_addr={.s_addr=0}, .sin_zero=""} 

这个 ,我在RH网站find的,也是我有相同的内核。

我的问题是,如果我删除在应用程序的客户端的任何bind() ? 这将是一个快速治疗或将导致任何灾难?

其他方式我运行示例程序没有绑定在客户端。 但是我正在谈论的应用程序build立了数百个连接。 那么在最坏的情况下会发生什么?

绑定到零地址与绑定到INADDR_ANY (定义为零)相同。 这意味着您可以在任何本地IP地址(服务器端)上建立连接,或使用出口接口IP地址(客户端)。 这很正常。

如果您不想使用客户端的任何特定地址:端口,则不需要调用bind()

内核将选择合适的接口和一个随机的端口来建立由客户端调用connect()启动的传出连接。