java ipv6转换成ipv4,如何映射IPv4的IPv6地址转换为IPv4(字符串格式)?「建议收藏」

IhaveastructsockaddrstructurecontaininganIPv4-mapped-IPv6addresslike::ffff:10.0.0.1.IwanttoobtainonlytheIPv4versionofitinastring(inthiscase,10.0.0.1)inCprogramminglangu…

大家好,又见面了,我是你们的朋友全栈君。

java ipv6转换成ipv4,如何映射IPv4的IPv6地址转换为IPv4(字符串格式)?「建议收藏」

I have a struct sockaddr structure containing an IPv4-mapped-IPv6 address like ::ffff:10.0.0.1. I want to obtain only the IPv4 version of it in a string (in this case, 10.0.0.1) in C programming language. How do I go about achieving it?

解决方案

As your structure contains an IPV6 address, I’ll assume your have a struct sockaddr * pointer (let’s name it addrPtr) pointing to a struct sockaddr_in6 structure.

You can get the address bytes easily.

const uint8_t *bytes = ((const struct sockaddr_in6 *)addrPtr)->sin6_addr.s6_addr;

Then add 12 to the pointer because the 12 first bytes are not interesting (10 0x00, then 2 0xff). Only the 4 last ones mater.

bytes += 12;

Now, we can use those four bytes to do whatever we want. For example, we might store them into a IPv4 struct in_addr address.

struct in_addr addr = { *(const in_addr_t *)bytes };

Then we can get a string using inet_ntop (declared in ).

char buffer[16]; // 16 characters at max: “xxx.xxx.xxx.xxx” + NULL terminator

const char *string = inet_ntop(AF_INET, &addr, buffer, sizeof(buffer));

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/128408.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Js判断数组中是否存在某个元素「建议收藏」

    Js判断数组中是否存在某个元素「建议收藏」方法一:indexOf(item,start);Item:要查找的值;start:可选的整数参数,缺省则从起始位子开始查找。indexOf();返回元素在数组中的位置,如果没有则返回-1;例子:vararr=[‘aaa’,’bbb’,’ccc’,’ddd’,’eee’];  vara=arr.indexOf(‘ddd’);  console.log(a);  //3  varb=arr.indexOf(‘d’);  console.log(b);  //-1  我通常的用法:if(

    2022年10月19日
    3
  • 纯HTML CSS制作导航栏 下拉菜单

    纯HTML CSS制作导航栏 下拉菜单纯HTMLCSS制作导航栏下拉菜单

    2022年5月28日
    38
  • SQLPro Studio 激活(在线激活)

    SQLPro Studio 激活(在线激活),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    168
  • 关于Anycast的介绍[通俗易懂]

    关于Anycast的介绍[通俗易懂]Anycast最初是在RFC1546中提出并定义的,它的最初语义是,在IP网络上通过一个Anycast地址标识一组提供特定服务的主机,同时服务访问方并不关心提供服务的具体是哪一台主机(比如DNS或者镜像服务),访问该地址的报文可以被IP网络路由到这一组目标中的任何一台主机上,它提供的是一种无状态的、尽力而为的服务(如图1)。目前对于Anycast的中文译称主要有,“任播”、“泛潘”、“选播”等,本

    2022年5月24日
    142
  • linux常见问题_linux安装方式

    linux常见问题_linux安装方式Normal07.8磅02falsefalsefalseMicrosoftInternetExplorer4

    2022年8月21日
    4
  • 损失函数与代价函数区别

    损失函数与代价函数区别各种损失函数的优缺点详解损失函数或者代价函数的目的是:衡量模型的预测能力的好坏。损失函数(Lossfunction):是定义在单个训练样本上的,也就是就算一个样本的误差,比如我们想要分类,就是预测的类别和实际类别的区别,是一个样本的哦,用L表示。代价函数(Costfunction):是定义在整个训练集上面的,也就是所有样本的误差的总和的平均,也就是损失函数的总和的平均,有没有这个平…

    2022年5月12日
    62

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号