linux网络通信----------inet_pton和inet_ntop函数

前言:

这两个函数是后来出现的,比较新的IP地址转换函数,可以在将IP地址在“点分十进制”和“整数”之间转换,可以处理Ipv4和ipv6,当然还有之前的某些函数也可以处理IP转换,请点击查看之前某些处理Ip的函数

inet_pton

作用:将“点分十进制” -> “整数”,也就是将点分十进制的ip地址转化为用于网络传输的数值格式

头文件以及参数
#include <arpe/inet.h>
int inet_pton(int af, const char *src, void *dst);

参数
第一个参数可以是AF_INET(对应的是ipv4)或AF_INET6,如果,以不被支持的地址族作为family参数,这两个函数都返回一个错误,并将errno置为EAFNOSUPPORT.
第二个参数是一个指向点分十进制串的指针,
第三个参数是一个指向转换后的网络字节序的二进制值的指针。

返回值
若成功则为1,若输入不是有效的表达式则为0,若出错则为-1,并将errno置为EAFNOSUPPORT.
详细点就是此函数转换由strptr指针所指向的字符串,并通过addrptr指针存放二进制结果,若成功则返回值为1,否则如果所指定的family而言输入字符串不是有效的表达式格式,那么返回值为0.

在这里插入图片描述

inet_ntop

作用:将 “整数”-> “点分十进制”,即将数值格式转化为点分十进制的ip地址格式(整数->字符串)

头文件以及参数
  #include <sys/types.h>
  #include <sys/socket.h>
  #include <arpa/inet.h>  //这个才是inet_ntop的头文件,上面两个只是网络编程需要的头文件
  const char *inet_ntop(int af, const void *src, char *dst, socklen_t cat);

参数以及返回值
前三个参数都跟上面的那一个函数的参数没什么区别,参数的作用相同

dst参数不可以是一个空指针。调用者必须为目标存储单元分配内存并指定其大小,调用成功时,这个指针就是该函数的返回值。

只是多了一个参数socklen_t cnt,他是所指向缓存区dst的大小,避免溢出,如果缓存区太小无法存储地址的值,则返回一个空指针,并将errno置为ENOSPC

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值