windows网络编程(一)
1. 关于bind
inaddr_any 的具体含义是,绑定到0.0.0.0。此时,对所有的地址都将是有效的,如果系统考虑冗余,采用多个网卡的话,那么使用此种bind,将在所有网卡上进行绑定。在这种情况下,你可以收到发送到所有有效地址上数据包。
例如:
sockaddr_in local;
local.sin_addr.s_addr = htonl(inaddr_any);
另外一种方式如下:
sockaddr_in local;
hostent* thishost = gethostbyname("");
char* ip = inet_ntoa(*(struct in_addr *)*thishost->h_addr_list);
local.sin_addr.s_addr = inet_addr(ip);
在这种方式下,将在系统中当前第一个可用地址上进行绑定。在多网卡的环境下,可能会出问题。
最常见的方式:
const char localip[] = "192.168.0.100";
sockaddr_in local;
local.sin_addr.s_addr = inet_addr(localip);
bind(socket, (lpsockaddr)&local, sizeof(sockaddr_in)
bind的安全问题: