Linux 编程 之 【socket】 getaddrinfo

【说明】  包含头文件:  #include    函数原型:  int getaddrinfo( const char *hostname, const char *service, const struct addrinfo *hints, struct addrinfo **res );    参数说明:  hostname    一个主机名或者地址串(IPv
摘要由CSDN通过智能技术生成

【说明】
  包含头文件:
  #include<netdb.h>
  
  函数原型:
  int getaddrinfo( const char *hostname, const char *service, const struct addrinfo *hints, struct addrinfo **res );
  
  参数说明:
  hostname    一个主机名或者地址串(IPv4的点分十进制串或者IPv6的16进制串)
  service     服务,即端口号,可以是一个服务的名称,比如"http", 也可以是一个数字字符串,比如“80”
  hints       可以理解为约束条件,即你创建的,要获得的addrinfo结构,有什么约束,在hints中进行设置
  res         这个就是我们最终获得的addrinfo结构
  
  功能说明:
  getaddrinfo 提供了将主机名和服务名转换成套接口地址结构(网络序)的功能
  
  产生原因:
  之前套接字编程,要得到sockaddr类型: 必须使用两种函数 getserverbyname(一类的函数 和 gethostent (一类的函数), 然后构建 sockaddr_in 结构,再强制类型转换得到 sockaddr结构。 而有了getaddrinfo这个函数后,直接调用就能得到sockaddr。
  
  使用说明:
  如果本函数返回成功,那么由res参数指向的变量已被填入一个指针,它指向的是由其中的ai_next成员串联起来的addrinfo结构链表。可以导致返回多个addrinfo结构的情形有以下两个:
  1)如果与hostname参数关联的地址有多个,那么适用于所请求地址簇的每个地址都返回一个对应的结构。
     当hints.ai_socktype=0,即未指定socket类型,则能会返回SOCK_DGRAM、SOCK_STREAM、SOCK_SEQPACKET等多种类型的addrinfo结构ÿ
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值