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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vuerouter配置_vue面包屑

    vuerouter配置_vue面包屑介绍VueRouter是Vue.js官方的路由管理器。它和Vue.js的核心深度集成,让构建单页面应用变得易如反掌。包含的功能有:嵌套的路由/视图表模块化的、基于组件的路由配置路由参

    2022年8月7日
    5
  • idea配置tomcat以及环境变量「建议收藏」

    idea配置tomcat以及环境变量「建议收藏」这里写目录标题tomcat环境变量idea配置tomcattomcat环境变量第一步下载tomcat网址:https://tomcat.apache.org/download-90.cgi下载完成后解压进入解压后的文件夹复制地址第二步下载tomcat环境变量配置右击此电脑->属性->高级系统设置->环境变量1.CATALINA_HOME2.编辑Path,点击“新建”,添加变量值:%CATALINA_HOME%\lib%CATALINA_HOME%\b

    2022年5月13日
    263
  • X86_64平台上利用qemu安装aarch64架构的虚拟机「建议收藏」

    X86_64平台上利用qemu安装aarch64架构的虚拟机「建议收藏」前一段时间摸索了以下在x86平台上安装arm架构(包括aarch64和armhf)的虚拟机,中间遇到了不少问题。把经验总结下来希望能帮到大家。1.安装qemu-system-aarch642.UEFI固件下载3.操作系统下载4.创建虚拟硬盘5.虚拟机安装6.虚拟机启动6.利用virt-manager启动虚拟机7.参考链接1.安装qemu-system…

    2022年10月17日
    1
  • 苹果绕id完美重启_iphone重启要输入id密码

    苹果绕id完美重启_iphone重启要输入id密码朋友捡到一个iphone6,已经很老的版本了,并且拆修过,手机没有关机等着人家来要,但是第二天就变成iphone已停用,估计别人也是觉得不值得找回了吧。手机就相当于是砖头了,然后交给我,让我尝试激活成功教程试试。在B站看了几个视频,发现网上有很多激活成功教程的软件,但是都是不能当电话用了,只能当做小pad用了,有的软件激活成功教程后不能关机重启,因为一旦关机重启就又锁上了,有的软件激活成功教程后不能登录iCloud,应该就是说不能登录AppID,不能登录应该就不能通过AppStore下载软件了吧。有的软件是通过删除基带的方式,这种方式据

    2022年9月22日
    1
  • 第一个发明日历的人_开源思想

    第一个发明日历的人_开源思想3月16日,历史上的今天,MINIX的作者AndrewTanenbaum出生;开源领袖、GNU项目的发起者RichardStallman出生;第一部照相手机的发明者PhilippeKahn出生;苹果发布了MacOSXServer1.0。

    2022年9月30日
    3
  • 使用Protostuff实现序列化与反序列化

    使用Protostuff实现序列化与反序列化使用Protostuff实现序列化与反序列化(1)Protobuf介绍GoogleProtocolBuffer(简称Protobuf)是Google公司内部的混合语言数据标准,目前已经正在使用的有超过48,162种报文格式定义和超过12,183个.proto文件。他们用于RPC系统和持续数据存储系统。ProtocolBuffers是一种轻便高效的结构化数…

    2022年5月4日
    76

发表回复

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

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