linux socket 网络相关函数inet_addr,inet_aton,inet_ntoa,htons或htonl,inet_pton,inet_ntop比较

《1》inet_addr():
简述:将一个点分十进制地址转换成一个in_addr,返回一网络字节顺序表示的Internet地址。
使用:server_addr.sin_addr.s_addr = inet_addr("192.168.0.10");

《2》inet_aton()
将字符串表示的网络地址转换为该地址数值的整数表示,返回的数字总是按照网络字节顺序的。

inet_addr与inet_aton的区别:
inet_aton认为255.255.255.255是无效的,不能对这个地址操作。而inet_addr可以。

《3》inet_ntoa()
给定一个数字网络地址,返回作为字符串的该地址的电地址表示。

《4》htons或htonl
将以主机字节顺序的数转换为一网络字节书序表示的数。
htons转16位的(host to network short), htonl转32位的(host to network long);
通常用法:

server_addr.sin_port = htons(2222);   //端口号
  server_addr.sin_addr.s_addr = htonl(INADDR_ANY);  //INADDR_ANY=0所以等效于
  server_addr.sin_addr.s_addr = INADDR_ANY;

INADDR_ANY: 表示任意的IP地址,一般为内核指定的,大多数系统取0。
htonl()简单说是一个把本机IP转化为网络协议中规定的格式的函数.也就是所谓的大端模式或小端模式。

《5》inet_pton
Linux下IP地址转换函数,支持IPV4,IPV6,可以在将IP地址从“点分十进制”转换成为网络字节顺序表示的Internet地址。
函数原型:int inet_pton(int af, const char *src, void *dst);
例如:inet_pton(AF_INET, "172.20.223.151", &servaddr.sin_addr);

《6》inet_ntop
Linux下IP地址转换函数,支持IPV4,IPV6,可以在将网络字节顺序表示的Internet地址转换成为“点分十进制”.
函数原型:const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt);
例如:inet_ntop(AF_INET, &servaddr.sin_addr, IPdotdec, 16);

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

废人一枚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值