实际开发过程中,遇到了这样一个问题:
windows下socket编程,防火墙已经关闭,使用ping命令测试服务器IP地址可以ping通,但是使用Socket连接服务器时始终无法连接上。
调查发现,本机有两张网卡,此时,客户端需要指定连接服务器的IP地址。使用bind函数指定需要使用的IP地址,端口号设置为0,由系统自由分配
seraddr.sin_family = AF_INET; // 设置地址族为IPv4
seraddr.sin_port = 0; // 设置地址的端口号信息
seraddr.sin_addr.s_addr = inet_addr(SERADDR); // 设置IP地址
ret = bind(sockfd, (const struct sockaddr *)&seraddr, sizeof(seraddr));
这样我们就可以通过bind函数来指定客户端连接服务器端的IP地址。