【发布时间】:2012-05-13 12:06:00
【问题描述】:
在阅读如何在 C 中建立 TCP 客户端/服务器连接时,我对 bind() 函数有疑问。
我了解到您需要此函数将您创建的套接字“绑定”到本地 IPEndPoint,因为客户端/服务器连接采用 套接字对,由 LocalIP 创建: LocalPort、RemoteIP:远程端口。因此我的问题是:
-
当客户端不调用 bind(),但在创建套接字后立即调用 connect() 时会发生什么以及内核会做什么(这是常见的事情;我也在客户端程序中这样做,但我不明白为什么我不需要绑定)?
...最重要的是...
为什么服务器程序调用 bind(),将 INADDR_ANY 指定为 LocalIP 地址?我读到这个常量对于指定一个通用 IP 地址很有用,即服务器接受来自 Internet 上任何地方的数据。但是...这是本地 IP 地址的规范,还是表明客户端可以到达服务器的位置?我越来越糊涂了……
【问题讨论】: