ffmpeg/libavformat/tcp.c中getaddrinfo在IOS下的问题

2023-05-16

IOS的播放器用了ffmpeg 3.1 , 发现不支持ipv6 

跟踪到ffmpeg/libavformat/tcp.c下的getaddrinfo函数,

发现执行完之后,如果是由ipv4合成ipv6的时候,会把端口设成0

所以,执行完这一句,把得到的地址,重新赋值上端口,ipv6就支持了 


为了同时支持ipv4和ipv6,所以getaddrinfo的hint的ai_family填的AF_UNSPEC

后面发现如果这样写,getaddrinfo有时候返回很慢,

然后就用dig命令查询了一下需要访问的服务器,A记录返回很快,AAAA记录有时候返回很快,有时候直接timeout了

也就是说,ipv6的解析可能会导致getaddrinfo返回慢?


考虑到国内基本上都是ipv4,所以我们是不是可以在getaddrinfo先直接走ipv4,走不通的时候再走ipv6? 

这样,既可以在用户实际使用中直接走ipv4,而不解析ipv6的地址。也可以在苹果的审核中通过ipv6-only的验证

所以,我们第一次getaddrinfo的hint的ai_family填的AF_INET。如果connect失败的时候,再用AF_INET6再试一次。


在我的网络环境上,发现这样修改后,getaddrinfo的耗时明显有下降。


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

ffmpeg/libavformat/tcp.c中getaddrinfo在IOS下的问题 的相关文章

随机推荐

  • gradle指定相应JDK编译

    问题描述 电脑中装有多个jdk版本 xff0c 可能默认的jdk是1 6 xff0c 但是项目中用到了俗称钻石语法的结构就是 lt gt 这玩意 但是由于你装的某些软件必须在1 6版本下才能跑 xff0c 因此你不想更改的你的JAVA HO
  • 无线路由器的连接与设置

    无线路由器的连接与设置 实验目的 掌握无线路由器基础知识掌握无线路由器设置学会使用设备连接无线路由器 实验环境 无线路由器 xff08 FAST迅捷 FW313R xff09 台式机 无线设备 实验内容 1 设置无线路由器上网方式为 固定I
  • 浅谈 PHY 芯片 UTP 接口直连(不使用变压器)的设计

    浅谈 PHY 芯片 UTP 接口直连 xff08 不使用变压器 xff09 的设计 1 背景 xff1a 一个项目 xff0c 需要把IP101GR模块的UTP接口和交换机芯片 xff08 RTL8305NB xff09 的 UTP 接口连
  • 千万不要去外国当程序员

    今天我来讲讲我这样的一个普通程序员是如何从有想法 xff0c 到实施 xff0c 到最后来到欧洲务工的 整个过程很曲折 xff0c 文章有点长 xff0c 大家给点耐心 如果看不下去请直接翻到最后 xff0c 有总结 个人背景 为了避免有人
  • 逻辑思维能力选择题30道

    逻辑思维能力选择题30道 这些题目都是作者选取于网络 xff0c 靠自己动脑做出来的是最棒的 1 有一个有钱人想让你和他玩一个游戏 xff0c 你在纸上写下一句话 xff0c 并作出选择 选择1 xff1a 如果你写的是实话 xff0c 那
  • 单位换算表大全

    长度 1千米 km 61 0 621英里 mile 1米 m 61 3 281英尺 ft 61 1 094码 yd 1丝米 dmm 61 1忽米 cmm 61 1丝 61 0 01毫米 61 0 001厘米 1厘米 cm 61 0 394英
  • Debian配置CA_配置Apache2使用ssl_配置http连接自动跳转到https

    需要使用到两台Debian服务器 xff0c 一台作为ca端 xff0c 一台作为Apache端 ca端IP xff1a 192 168 200 129 Apache端IP xff1a 192 168 200 131 以下是CA端配置 xf
  • 重量(计量单位)英文缩写和转换表

    重量的缩写是W 一 质量单位换算 xff1a 1长吨 xff08 long ton xff09 61 1 016吨 xff08 t xff09 1千克 xff08 kg xff09 61 2 205磅 xff08 lb xff09 1磅 x
  • 逻辑学三大定律是什么?

    逻辑思维三大定律 同一律 xff0c 矛盾律 xff0c 排中律 同一律 xff1a A 是 A 前后思维中 xff0c 概念要同一 白马非马论违反同一律 商家的买一赠一 xff0c 前后两个一不是同一个概念 违反同一律 矛盾律 xff1a
  • 逻辑学三大定律

    1 同一律就是前后提及概念 论题要是同一个 xff0c 不是同一个就是不合逻辑的 看这句话 xff0c 人有几百万年的历史 xff0c 你没有几百万年的历史 xff0c 所以你不是人 xff0c 典型的三段论 xff0c 大前提 xff0c
  • LeetCode:移除元素

    给你一个数组 nums 和一个值 val xff0c 你需要 原地 移除所有数值等于 val 的元素 xff0c 并返回移除后数组的新长度 不要使用额外的数组空间 xff0c 你必须仅使用 O 1 额外空间并 原地 修改输入数组 元素的顺序
  • C#高级特性(反射)

    今天来讲解反射的应用 xff1a 一 反射是什么 xff1f 简诉一下 xff0c 反射就是 Net Framework 的一个帮助类库 xff0c 可以获取并使用metadata xff08 元数据清单 xff09 xff1b 说的通俗易
  • Linux 操作命令 c

    1 打开终端的快捷键 ctr 43 alt 43 t 2 终端字体放大 ctr 43 shift 43 43 3 终端字体缩小 ctr 43 4 ls 查看当前目录的下文件信息 5 pwd 当前当前目录的路径 6 touch 创建一个文件
  • java实现平面4点最小距离

    已知平面上若干个点的坐标 需要求出在所有的组合中 xff0c 4个点间平均距离的最小值 xff08 四舍五入 xff0c 保留2位小数 xff09 比如有4个点 xff1a a b c d 则平均距离是指 xff1a ab ac ad bc
  • 【HTTPS】TLS/SSL握手失败的场景分析

    0 背景知识 TLS SSL握手的过程参考 SSL握手过程图解 1 常见报错 1 1 SSLHandshakeException handshake failure 1 1 1 TLS SSL协议版本不匹配 自从TLS 1 2版本在2008
  • 使用RKE部署Rancher v2.5.8 HA高可用集群

    文章目录 一 了解 Rancher1 关于Helm2 关于RKE3 关于K3S4 Rancher 名词解释4 1 仪表盘4 2 项目4 3 多集群应用4 4 应用商店4 5 Rancher Server URL4 6 RKE 模板4 7 G
  • SQL练习题

    网上有一篇关于SQL的经典文章 xff0c 超经典SQL练习题 xff0c 做完这些你的SQL就过关了 xff0c 引用和分析它的人很多 xff0c 于是今天复习SQL的时候找来练了练手 原作者用的是SQL Server 2008 xff0
  • VS2015编译报MS8020错误

    新装的VS2015 xff0c 调试旧的代码报错 xff0c 信息如下 xff1a MSB8020 The build tools for v120 Platform Toolset 61 39 v120 39 cannot be foun
  • 1001. Poker (思维 / 模拟)(2020年百度之星*程序设计大赛-初赛二)

    传送门 思路 xff1a 嗐 xff0c 又是这种模拟题 xff0c 每次都不长记性看数据范围 xff0c 非得傻傻的去循环模拟T一次才知道思考 呜呜呜太菜了 既然每次至少拿出m xff0c 且求的是最多次数 xff0c 那我们每次就拿m出
  • ffmpeg/libavformat/tcp.c中getaddrinfo在IOS下的问题

    IOS的播放器用了ffmpeg 3 1 发现不支持ipv6 跟踪到ffmpeg libavformat tcp c下的getaddrinfo函数 xff0c 发现执行完之后 xff0c 如果是由ipv4合成ipv6的时候 会把端口设成0 所