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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值