getaddrinfo()&gethostbyname();用法分析

来源:互联网 发布:制作片头的软件 编辑:程序博客网 时间:2024/05/29 07:31

今天遇到一个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的第一个第二参数还可以做很多有趣的事
*/

0 0
原创粉丝点击