Linux函数--inet_pton / inet_ntop

来源:互联网 发布:mac系统导出照片 编辑:程序博客网 时间:2024/06/05 20:49

http://blog.csdn.net/lindyl/article/details/10427925

inet_pton 和 inet_ntop

Linux下这2个IP地址转换函数,可以在将IP地址在“点分十进制”和“整数”之间转换而且,inet_pton和inet_ntop这2个函数能够处理ipv4和ipv6。算是比较新的函数了。

inet_pton

函数原型如下[将"点分十进制" -> "整数"] 

#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>int inet_pton(int af, const char *src, void *dst);
//这个函数转换字符串到网络地址,第一个参数af是地址族,转换后存在dst中

inet_pton是inet_addr的扩展,支持的多地址族有下列:
af = AF_INET
src为指向字符型的地址,即ASCII的地址的首地址(ddd.ddd.ddd.ddd格式的),函数将该地址转换为in_addr的结构体,并复制在*dst中
af = AF_INET6
src为指向IPV6的地址,函数将该地址转换为in6_addr的结构体,并复制在*dst中。如果函数出错将返回一个负值,并将errno设置为EAFNOSUPPORT,如果参数af指定的地址族和src格式不对,函数将返回0。

inet_ntop

函数原型如下[将"点分十进制" -> "整数"]

#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt);//这个函数转换网络二进制结构到ASCII类型的地址,参数的作用和上面相同,只是多了一个参数socklen_t cnt,//他是所指向缓存区dst的大小,避免溢出,如果缓存区太小无法存储地址的值,则返回一个空指针,并将errno置为ENOSPC

 

编程实例:

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/socket.h>#include <netinet/in.h>int main (void){  char IPdotdec[20]; // 存放点分十进制IP地址  struct in_addr s;  // IPv4地址结构体  // 输入IP地址  printf("Please input IP address: ");  scanf("%s", &IPdotdec);  // 转换  inet_pton(AF_INET, IPdotdec, (void *)&s);  printf("inet_pton: 0x%x\n", s.s_addr); // 注意得到的字节序  // 反转换  inet_ntop(AF_INET, (void *)&s, IPdotdec, 16);  printf("inet_ntop: %s\n", IPdotdec);}

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 镁粉哪里有卖 镁粉的作用 镁粉价格 镁粉多少钱一吨 镁粉是什么 镁粉的用途 工业镁粉 抛镁粉 撒镁粉 硼镁粉 镁粉对人的危害 盐酸镁粉反应 分析纯镁粉 镁粉的燃点 硫酸镁粉的作用 镁粉爆炸 运动员手上涂镁粉 举重时运动员为什么搓镁粉 钙镁片适合什么人吃 钙镁 艾瑞可钙镁锌被曝光 汤臣倍健钙镁片 自然之宝钙镁锌 钙镁离子 钙镁片价格 钙镁片哪个牌子好 钙镁片的作用 镁铝合金 铝碳酸镁混悬液 铝碳酸镁片饭前吃还是饭后吃 铝碳酸镁片多少钱 镁铝砖 铝碳酸镁咀嚼片的功效及作用 贵阳铝镁设计研究院 铝碳酸镁片价格 镁铝是什么意思 镁铝 子母箱 拉箱包 lme镁锭 镁锭价格