当前位置:我的异常网» C语言 » ipv6地址处置

ipv6地址处置(2)

www.myexceptions.net  网友分享于:2014-01-17  浏览:37次

#include

char ipv60[]="2001:0DB8:0000:0000:0000:0000:1428:0000";

char ipv61[]="1040::1";

char ipv62[]="fe80::20c:29ff:fe6b:2516";

char ipv63[]="::ffff:c0a8:5909";

unsigned char ip_v6[16];

void show(char *a) {

int i;

printf("%-39s=>",a);

for (i=0;i<16;i++) printf("%02x ",ip_v6[i]);

printf("\n");

}

void inet_addr6(char *a) {

char *p;

int n,i,r,k,j;

short s;

k=0;

p=a;

while (1) {

if (*p==':') k++;

p++;

if (*p==0) break;

}

if (a[0]==':') k--;

i=0;

p=a;

while (1) {

r=sscanf(p,"%hx%n",&s,&n);

if (1==r) {

ip_v6[i]=*((unsigned char *)&s+1);

ip_v6[i+1]=*((unsigned char *)(&s));

i+=2;

if (i>=16) break;

p+=n;

} else if (0==r) {

if (p[0]==':') {

if (p[1]==':') {

for (j=0;j

i+=(8-k)*2;

if (i>=16) break;

p+=2;

} else {

p++;

}

} else {

printf("Format Error [%s]!\n",a);

}

} else break;

}

}

int main() {

inet_addr6(ipv60);show(ipv60);

inet_addr6(ipv61);show(ipv61);

inet_addr6(ipv62);show(ipv62);

inet_addr6(ipv63);show(ipv63);

return 0;

}

//2001:0DB8:0000:0000:0000:0000:1428:0000=>20 01 0d b8 00 00 00 00 00 00 00 00 14 28 00 00

//1040::1                                =>10 40 00 00 00 00 00 00 00 00 00 00 00 00 00 01

//fe80::20c:29ff:fe6b:2516               =>fe 80 00 00 00 00 00 00 02 0c 29 ff fe 6b 25 16

//::ffff:c0a8:5909                       =>00 00 00 00 00 00 00 00 00 00 ff ff c0 a8 59 09

//

文章评论

ipv6 地址 c语言处理,ipv6地址处置(2)相关推荐

  1. c语言检测邮箱地址,C语言实现电子邮件地址验证程序

    我们最经常遇到的验证,就是电子邮件地址验证.网站上常见.各种网页脚本也都常用"正则表达式"(regular expression)对我们输入的电子邮件地址进行验证,判断是否合法.有 ...

  2. c语言检测邮箱地址,c语言实现邮箱地址验证

    rfc中是这样定义邮箱格式的:html address = mailbox ; one addressee / group ; named list group = phrase ":&qu ...

  3. c语言判断ipv6地址合法,判断IPv6地址合法性

    在 头文件下有下列这些宏用于判断IPv6地址合法性 返回0代表true,返回非零值代表ipv6地址为非指定类型的的地址(false) intIN6_IS_ADDR_UNSPECIFIED(const ...

  4. 【计算机网络】网络层 : IPv6 协议 ( IPv6 数据包格式 | IPv6 地址表示 | IPv6 地址类型 | IPv4 与 IPv6 协议对比 | IPv4 -> IPv6 过渡策略 )

    文章目录 一.IPv6 发展 二.IPv6 数据报格式 三.IPv6 和 IPv4 对比 四.IPv6 地址表示 五.IPv6 地址 类型 六.IPv4 向 IPv6 过渡策略 一.IPv6 发展 I ...

  5. centos ipv6 网卡_CentOS 6配置IPv6地址

    编辑网络配置信息文件. vim /etc/sysconfig/network 启用IPv6支持. 编辑网卡配置文件. vim /etc/sysconfig/network-scripts/ifcfg- ...

  6. IPv4地址和IPv6地址的比较,IPv6地址及其表示

    IPv4地址和IPv6地址的比较,IPv6地址及其表示 TCP/IP协议是互联网发展的基石,其中IP是网络层协议,规范互联网中分组信息的交换和选路.目前采用的IPv4协议地址长度为32位,总数约43亿 ...

  7. ipv4转换ipv6工具_IPv4与IPv6的区别,不仅仅是地址变长而已

    IP地址是分配给上网设备的数字标签,是每一个网络和设备的逻辑地址,我们在访问网站.发送文件或传输任何报文都会打包成一个个数据包,然后按照IP地址,传送数据包.我们上网时在浏览器里输入的网站是方便记忆的 ...

  8. IP地址,IPV4与IPV6

    目录 1.IP地址 2.IPV4 2.1.IPv4数据报格式 2.2.网络号和主机号 2.3.IP地址的分类 2.4.子网划分与子网掩码 2.4.1.子网划分 2.4.2子网掩码 2.5.网络地址转换 ...

  9. 中国A类IP地址小调查以及IPv6展望

    前言 我今天在学校的机房里面学习 TCP/IP + Linux.我在Linux中敲下如下几行命令: ifconfig :用来确定我的ip,发现是59.71.137.69.惊讶的发现:这是一个公有的A类 ...

最新文章

  1. oracle存储过程多条件判断,oracle存储过程条件替空的判断(2)
  2. mac iTunes启动失败,声称iTunes文件夹被锁定
  3. 星巴克“啡快”宣布接入支付宝、口碑等阿里应用
  4. 填坑-十万个为什么?(18)
  5. 带括号多项式版四则运算
  6. mysql limit索引变_Mysql limit 优化,百万至千万级快速分页 复合索引的引用并应用于轻量级框架...
  7. Android studio 不能识别(显示?????)部分手机的解决办法
  8. Web表单提交之disabled问题
  9. 教你用磁盘分区软件无损扩容c盘的方法
  10. Python之scipy安装
  11. 关于5月份BCH硬分叉,这些你应该知道
  12. Oracle数据库基础(二)
  13. WDCP是什么 关于WDCP的详细介绍
  14. 【数学与算法】隐函数定义,以及隐函数求导公式
  15. 基于C#实现的零食售卖管理系统,支持称重,扫码,打印,彩虹兔零食售卖系统
  16. asp.net TextBox文本框背景透明+浅色背景文字提示
  17. 读取EXCEL数据到SAP函数重新封装为ZALSM_EXCEL_TO_INTERNAL_TABLE(解决单元格至多上传50字符 单次至多上传9999行 只能读取单个SHEET)
  18. Android 上关于设备唯一标识的调研
  19. H3C交换机console登录配置
  20. python实现千千音乐mp3下载

热门文章

  1. 【loadrunner】记录loadrunner12回放脚本的报错(400,401)
  2. html5 读取剪切板,Html5剪切板功能的实现
  3. python爬虫框架论文开题报告范文_仿今日头条新闻爬虫设计毕业论文+设计源码+开题报告...
  4. 什么是coreauthd,为什么它可以在Mac上运行?
  5. Java做抽卡_游戏王:无限抽卡怎么做?拥有这一套组合你就能抽完整个卡组!...
  6. 第十集 爱在天路唐古拉,青藏梦止长江源
  7. 华为手机关闭蓝牙开发搜索_华为手机这3个功能必须关闭,宜早不宜迟,否则手机很容易变卡...
  8. vue脚手架项目部署到服务器,vue脚手架项目发布
  9. 20W字纯手打Java并发学习笔记,助力你金三银四,决战春招,必进大厂
  10. 小程序WeUI使用教程(简单易懂)