【发布时间】:2012-03-15 19:34:02
【问题描述】:
我正在使用 Winsock 编写一个 TCP 服务器应用程序。我的服务器将在其上运行的机器和客户端将在其上运行的机器都有 2 个 NIC。涉及的IP地址是:
- 服务器网卡1:192.168.132.14
- 服务器网卡 2:192.168.132.15
- 客户端网卡 1:192.168.132.16
- 客户端网卡 2:192.168.132.17
问题 1: 在我的服务器应用程序中,如果我在绑定我的侦听套接字时使用 INADDR_ANY,我的两个 IP 地址中的哪一个将被使用?我是否正确地假设没有任何信息并且我应该使用 inet_addr("192.168.132.14") 代替 INADDR_ANY?
问题 2: 客户端连接我时如何控制他使用的 IP 地址?他会在调用 connect() 之前简单地调用 bind() 吗?如果他没有,我是否会认为他是从任一地址连接的(不知道是哪个地址)?
【问题讨论】:
-
INADDR_ANY 将绑定到两个 NIC,因此只要您没有其他套接字已经在侦听(或将尝试侦听)到另一个 IP 上的同一端口,您就可以使用 INADDR_ANY来源:cs.cmu.edu/~srini/15-441/F01.full/www/assignments/P2/…