【多网段切换导致DNS域名解析失败问题处理】

      最后更新:2022-04-04 03:06:13 手机定位技术交流文章

      文章目录

        • ?问题描述:
        • ?问题排查:
        • ?问题解决:
        • ?知识扩展:
        • .rs_init () 定义 :
          • 作用:
          • 所属库:
          • 示例:
          • 描述
          • 相关文件
        • ?引经据典:

      ?问题描述:

      该设备以两种方式联网:在测试期间,局域网和WIFI连接在两个不同的路由器上;当两个网络(局域网或WIFI)被交换时,该设备的mqtt应用程序失败(服务器地址是一个域名)。

      ?问题排查:

      初始检查时, mqtt 程序重新启动, 并且可以正常连接。 但是, mqtt 的网格- 重新连接功能没有被使用 。 最后读取 mqtt 源头后发现它是一个呼叫 。
      getaddrinfo如果函数失败,您可以使用 DNS 确定其位置。

      ?问题解决:

      当 DNS 分辨率失败时, 将重新装入 DNS 添加到 mqtt 回转中 。res_init()功能、问题固定并成功重新连接

      ?知识扩展:

      如果在程序中调用getaddrinfogetnameinfo为了检索域名的IP, 在同一程序中, 先前成功获取的结果将被保存, 适当的 IP 下次可以解构, 即使残疾 DNS 和系统 DNS 缓存在下一次呼叫前已经清除 。res_init()函数以清除它们为自己预留的缓存

      .rs_init () 定义 :

      作用:

      查找默认域名和 IP 地址 。

      所属库:

      标准 C 库 (libc.a)

      示例:

      描述

      获取操作名称服务器默认域名和互联网地址的 conf 文件 。
      如果文件 / etc/ resolv. conf 不存在。对于名称解析, Res_ init 函数试图使用本地/ etc/ 主机文件 。如果系统缺少域名服务器,Conf 文件/etc/resolv.conf 不应该存在 。无论系统是否使用名称服务器,机器上也必须有/ETC/主机文件。在这种情况下,执行系统所需的主机代号应包含在本文件中。即使名称服务器不运行 。
      Res_init 子常规是构成冷凝器的多个常规之一。解析器是一系列将域名转换为互联网地址的例行程序集。文件/文件/内含/内含/索尔夫h,_res 的结构在本文件中定义。域名信息根据Res_init 函数存储在(_res)结构中。_res 结构的默认设置受到三个环境变量的影响:LOCADOMAIN、RES_TIMEOUT和RES_RETRY。
      使用 Res_init 函数的任何程序都必须在编译过程中将 _BSD 宏设置为一定值。有效值为43和44。所有应用程序还必须包括 BSD libbsd.a 仓库。

      相关文件

      路径 描述
      /etc/resolv.conf 包括名称服务器和域名。
      /etc/hosts 网络主机的名称和地址。 此文件用于将主机名转换为互联网地址 。

      ?引经据典:

      https://blog.csdn.net/weixin_39530839/article/details/116778660?utm_source=app&app_version=5.3.0
      https://www.ibm.com/docs/zh/aix/7.3?topic=r-res-init-subroutine

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/21414.html

          热门文章

          文章分类