- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
IP转码方法归类
IP地址格式转换问题及方法归类
Linux 下将点分制IP地址转成无符号长整型
知识背景:
210.25.132.181属于IP地址的ASCII表示法,也就是字符串形式。英语叫做IPv4 numbers-and-dots notation。
如果把210.25.132.181转换为整数形式,是座机电话号码33,这个就是整数形式的IP地址。英语叫做binary data。(其实binary是二进制的意思)
函数inet_pton和inet_ntop这2个函数能够处理ipv4和ipv6int inet_pton int af, const char *src, void *dst ;
函数说明:
这个函数转换字符串到网络地址,第一个参数af是地址族,转换后存在dst中
inet_pton 是inet_addr的扩展,支持的多地址族有下列:
AF_INET:src为指向字符型的地址,即ASCII的地址的首地址(ddd.ddd.ddd.ddd格式的),函数将该地址转换为in_addr的结构体,并复制在*dst中
AF_INET6:src为指向IPv6的地址,,函数将该地址转换为in6_addr的结构体,并复制在*dst中
如果函数出错将返回一个负值,并将errno设置为EAFNOSUPPORT,如果参数af指定的地址族和src格式不对,函数将返回0。
函数inet_ntop进行相反的转换
原型const char *inet_ntop int af, const void *src, char *dst, socklen_t cnt ;
函数说明:
这个函数转换网络二进制结构到ASCII类型的地址,参数的作用和上面相同,只是多了一个参数socklen_t cnt,他是所指向缓存区dst的大小,主要为避免溢出,如果缓存区太小无法存储地址的值,则返回一个空指针,并将errno置为ENOSPC
IPv4下调用方法:
inet_pton AF_INET, 192.168.1.1, void* s ; //struct in_addr s; // IPv4地址结构体
//将点分十进制地址填充到in_addr结构中
IPv6下将二进制IP地址转换为字符串方法
inet_ntop AF_INET6, void* p- ip_src- s6_addr,strip,sizeof strip ;
//p为IPv6头部指针,ip_src为IPv6头部中的源IP地址,strip为char数组,用于存放转换好的ASCII类型IPv6地址
//转换好后输出strip类似于:2001:470:23:13::6等标准IPv6地址书写格式
ConvertIptoLongInt string strIpAddr string szReturn ;
unsigned long lintTemp;
struct in_addr addr;
char cstr[20];
strcpy cstr, strIpAddr.c_str ;
lintTemp inet_addr cstr ;
//以下是对IP地址进行错误判断,查看是否是非法IP地址格式
if -1 lintTemp printf inet_addr return -1/n ;
return szReturn; else sprintf cstr, %ld, lintTemp ; string szResult cstr;
return string cstr ; Windows下C++网络字节顺序转换函数、ip格式转换函数
inet_addr ,将IP地址从点数格式转换成无符号长整型。
inet_ntoa ,将网络地址转换成“.”点隔的字符串格式。 注意的是inet_ntoa 将结构体in-addr作为一 个参数,不是长整形。同样需要注意的是它返回的是一个指向一个字符的 指针。它是一个由inet_ntoa 控制的静态的固定的指针,所以每次调用 inet_ntoa ,它就将覆盖上次调用时所得的IP地址。 strcpy cstr, strIpAddr.c_str ;这个函数。
一些函数原型:
int inet_aton const char *cp, struct in_addr *inp ;
in_addr_t inet_addr const char *cp ;
in_addr_t inet_network const char *cp ;
int inet_pton int af, const char *src, void *dst ;
const char *inet_ntop int af, const void *src, char *ds
文档评论(0)