IPv6网络编程注意[from IPv4]随笔

2023-05-16

C语言IPv6网络编程注意[from IPv4]随笔

在选择address_family时(如socket()、inet_ntop()第一个参数,sockaddr_in6.sin6_family)使用AF_INET6即可,以及操作级别(如setsockopt的形参level)和操作选项时采用对应的IPPROTO_IPV6级别(而非IPPROTO_IP) / IPV6_** 操作名(而非IP_**)

IPv4仅32位用int即可表示,IPv6的地址长达128位,只能用IN6_ADDR结构体或者字符串表示,只能通过inet_ntop、inet_pton函数转换,无法直接赋值

原始套接字raw socket自定义报文首部(IPV6_HDRINCL)仅在WINDOWS下(或高版本linux内核下?)可用,但WINDOWS下无法通过setsockopt来设置如IPV6_TCLASS、IPV6_RTHDR此类选项(WINDOWS下注意使用WSAStartup、WSACleanup等)(对于IPV6_RTHDR等IPv6扩展报头在windows下同样无法通过sendmsg的辅助数据来发送,linux等其余系统可以)

对于IPv4和IPv6通用对套接字/文件描述符的控制方法如select;WINDOWS使用closesocket关闭套接字,其他系统需要注意shutdown()和close()的区别;WINDOWS使用ioctlsocket和SetHandleInformation等,其余系统采用ioctl/fcntl

sockaddr和sockaddr_in结构体占用空间大小相同,但sockaddr_in6结构体更大,在调用一些函数时需注意对象本体的生存期,且其成员sin6_flowinfo和sin6_scope_id基本被遗弃了不使用

vxworks系统采用connectWithTimeout和控制路由的ipRouteCreate;linux系统可对in6_rtmsg结构体(IPv4为rtentry)采用ioctl的SIOCADDRT、SIOCDELRT选项进行操作,以及sendmsg自带的inet6_rth_init()、recvmsg自带的inet6_rth_reverse()等接口

可以通过getaddrinfo获取字符串(主机名)的IP信息,getsockname获取已经绑定套接字的IP信息


随便瞎写的,有些乱,错失请指正

参考文章:
IPv6 基本原理详解介绍
sockopt套接字选项操作
Linux C/C++下IPv6 socket详解
《UNIX网络编程卷1_套接字联网API(第3版)》

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IPv6网络编程注意[from IPv4]随笔 的相关文章

  • MySQL错误ERROR 1046 (3D000): No database selected解决办法

    No database selected可以理解为没有选择种数据库 先在查看数据库种包括的database有哪些 xff0c 选择自己要操作的数据 记住database后面一定加s 选择自己要操作那一个数据库 这样选择之后mysql gt
  • CentOS7使用su命令切换到root用户:su:鉴定故障

    安装完CentOS7后 xff0c 在设置过程中设置了root密码 xff0c 但是当从普通用户切换到root用户时报错 这时就想到可以将系统模式切换到单用户模式下 xff0c 修改root密码 重启CentOS7系统 xff0c 按e键
  • CentOS7版本设置系统的静态IP地址

    每次CentOS7重新开机 xff0c 系统的IP地址都会改变 xff0c 使用起来很不方便 xff0c 所以就将系统的IP设置为静态不变的IP 首先需要找到CentOS7版本的网络配置文件在哪里 xff0c 版本不一样可能配置文件不一样
  • “Job for docker.service failed because the control process exited with error code.” 问题解决

    前一天使用Docker还可以 xff0c 第二天使用systemctl start docker命令启动 xff0c 结果 我找问题花了两个小时 xff0c 在哪里一通乱找 xff0c 一通乱查 xff0c 网上乱看博客 xff0c 浪费了
  • RocketMQ同一Topic、消费组创建多个消费者失败问题

    文章目录 业务场景问题复现解决方式问题跟踪 业务场景 rocketmq建议一个服务对应一个topic xff0c 但是一个服务下会有多个不同的业务消息 xff0c 同时rocketmq建议不同的业务消息对应不同的tag xff0c 当Spr
  • AD18设计PCB时常见问题及操作

    我做PCB设计时 xff0c 常采用AD18这个软件 xff0c 使用过程中经常碰到一些问题 xff0c 遇到查了半天解决了 后来又碰到了 xff0c 索性记一下吧 xff0c 以后碰到的也陆陆续续记上来 xff0c 图片不一定用自己的了
  • C/C++中的new和delete的实现过程

    文章目录 newdeletenew delete 下面是 C 43 43 Primer 5th 中P726 对 new 和 delete 过程的解释 xff1a 当我们使用一条new表达式时 xff0c 实际上执行了三步操作 xff1a n
  • 判断链表是否有环

    题目 xff1a 给你一个链表的头节点 head xff0c 判断链表中是否有环 如果链表中有某个节点 xff0c 可以通过连续跟踪 next 指针再次到达 xff0c 则链表中存在环 为了表示给定链表中的环 xff0c 评测系统内部使用整
  • Linux 我已经搭建好LAMP,怎么让别人访问到我的服务器(通过外网),端口映射,内网穿透

    使用Ngrok 免费 xff09 1 下载Ngrok https dashboard ngrok com get started setup 2 解压并移动到 usr bin mv ngrok usr bin 3 映射127 0 0 1 x
  • Springboot自动装配原理

    springboot配置文件的装配过程 1 springboot在启动的时候会加载主配置类 xff0c 开启了 64 EnableAutoConfiguration 2 64 EnableAutoConfiguration的作用 xff1a
  • 百度面试基础问题

    上午百度面试 xff0c 我投的测试 xff0c 文三路伊美大酒店 xff0c 面了接近一个小时 xff0c 问了很多基础的东西 xff0c 我有些混淆也有些回答得不全面 xff0c 可能跪了 xff0c 记录一下面试题吧 xff0c 权当
  • Python的Playwright - 1.2 ConsoleMessage

    ConsoleMessage对象通过page on console 事件按页面调度 常见的几种属性 console message argsconsole message locationconsole message textconsol
  • nginx配置导致文件上传失败

    nginx配置导致文件上传失败 问题描述问题原因解决方法 问题描述 项目在客户使用文件上传是出现了意外报错 xff0c 通过查看报错日志 xff0c 发现是nginx服务器配置导致的错误 日志报错信息如下 xff1a 2023 04 14
  • TortoiseSVN的基本使用

    TortoiseSVN的基本使用 SVN xff1a 代码版本管理工具 xff1b 他能记住每次的修改 xff1b 查看所有的修改记录 xff1b 恢复到任何历史版本 xff1b 恢复已经删除的文件 SVN与Git比的优势 xff1a 使用
  • Ubuntu18.04 反复进入登陆页面

    在安装openssh server和openssh client重启之后 xff0c 登陆用户黑屏然后再次进入登录页面 尝试过删除 Xauthority xff1a 提示没有这文件 最终解决方法 xff1a ctrl 43 alt 43 f
  • 路径、连通、连通图,强连通图、连通分量、极大连通子图以及割点、割边保姆级解释

    前言 xff1a 由于在学习最大割的过程中涉及很多定义 xff0c 下面先回顾一下关于路径 连通 连通图 xff0c 强连通图 连通分量 极大连通子图以及割点 割边的定义 目录 1 路径 2 连通 3 连通图 4 强连通图 5 连通分量 极
  • 应用宝sdk接入流程与注意事项总结

    众所周知 xff0c 应用宝sdk几乎是国内应用市场sdk中最难接入的Android sdk xff0c 很多人初始接入都会感觉很痛苦 xff0c 文档多又乱 xff0c 问题排查也是非常蛋疼的事情 xff0c 所以 xff0c 今天抽了个
  • SecoClient接收返回码超时解决办法

    SecoClient接收返回码超时解决办法 参考网址 步骤 xff1a 第一步 xff0c Windows键进入 34 设置 34 第二步 xff0c 进入 34 更新与安全 34 第三步 xff0c 找到恢复 xff0c 点击 高级启动
  • 一、ROS的五个特点

    一 ROS的五个特点 xff1a 1 点对点设计 点对点的设计通俗的讲就是一个大的工程项目 xff0c 每个动能相互是独立的 xff0c 或者耦合比较低 有一个大脑负责总的任务调度 xff0c 为服务和客户建立连接充当媒介 各个功能之间可以
  • 双系统格式化Ubuntu分区后Windows 开机出现grub rescue问题

    双系统格式化Ubuntu分区后Windows 开机出现grub rescue问题 开始电脑上装了Windows和ubuntu双系统 xff0c 突然一天脑子一热直接把ubuntu所在盘给格式化了 xff0c 潇洒的打开 xff0c 结果就出

随机推荐