今天遇到一个gethostbyname()函数,但是编译器提示已经不支持,让用getaddrinfo..
So,今天一整都研究这个函数,发现它是那么有趣灵活~
(为什么插入代码我不能用。。。)
Node:使用这个函数必须要启动socket,,..
WSAStartup(MAKEWORD(2, 2), &wsaData)
然后我白话来讲一下gethostbyname 的四个参数
1、主机名、可是网址、IP。为空的时候表示本机("");
2、端口号、服务名、或空
3、想要获取的信息内容,主要是IP类型协议什么的,没深搞我用的是
hints.ai_family = AF_INET; hints.ai_socktype = SOCK_STREAM;
4、获取结果的addrinfo指针,addrinfo是个结构体请百度.
Ok,这就够了
struct addrinfo *answer, hints; getaddrinfo("", NULL, &hints, &answer);
如果函数成功是返回0,我这里没捕获错误,上面的代码获得了本机的信息。有什么用?
addinfo的结构体的有个是si_addr,它的内容格式是经常用来填写sockeaddr_in结构等价
static sockaddr_in service; service.sin_family = answer->ai_family; service.sin_addr = ((struct sockaddr_in *)answer->ai_addr)->sin_addr; service.sin_port = htons(port); bind(ListenSocket, (sockaddr *)&service, sizeof(service)) == SOCKET_ERROR);//为了简洁我都没捕获错误;
/*
如上;成功获取本机IP,并绑定端口~这就增加了程序的灵活...
通过修改getadderinfo的第一个第二参数还可以做很多有趣的事
*/