日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2025/3/15 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【多网段切换导致DNS域名解析失败问题处理】 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

    • 🔴問題描述:
    • 🟠問題排查:
    • 🟡問題解決:
    • 🟢知識擴展:
    • 🔵res_init() 簡介:
      • 作用:
      • 所屬庫:
      • 示例:
      • 描述
      • 相關(guān)文件
    • 🟣引經(jīng)據(jù)典:


🔴問題描述:

設備有LAN和WIFI兩種網(wǎng)絡方式,測試時LAN和WIFI分別連接在兩個不同的路由器上,切換兩個網(wǎng)絡(只啟用LAN或者WIFI)時發(fā)現(xiàn)設備的mqtt程序重連服務器會失敗(服務器地址使用的是域名)。

🟠問題排查:

初步排查時發(fā)現(xiàn)重啟mqtt程序,可以正常連接。但是使用mqtt的斷網(wǎng)重連功能發(fā)現(xiàn)就不行。最后研讀mqtt源碼,發(fā)現(xiàn)是調(diào)用
getaddrinfo函數(shù)失敗了,順藤摸瓜去排查這個函數(shù)與DNS相關(guān)的地方。

🟡問題解決:

需要在DNS解析失敗時,重新加載一下DNS。所以在mqtt斷鏈的回調(diào)里加入了res_init()函數(shù),問題解決,重連成功。

🟢知識擴展:

如果在程序中調(diào)用getaddrinfo和getnameinfo來獲取域名對應的IP,在同一進程中,上一次成功獲取的結(jié)果會被保留下來,即使在下一次調(diào)用之前disable了DNS并清空了系統(tǒng)的DNS緩存,下一次仍然能夠解析出正確的IP。此時需要在調(diào)用這兩個函數(shù)之前用res_init()函數(shù)來清空他們自己保留的緩存。

🔵res_init() 簡介:

作用:

搜索默認域名和 Internet 地址。

所屬庫:

標準 C 庫 ( libc.a )

示例:

#include <sys/types.h> #include <netinet/in.h> #include <arpa/nameser.h> #include <resolv.h>void res_init ( )

描述

res_init子例程讀取/etc/resolv.conf文件以獲取默認域名和運行名稱服務器的初始主機的 Internet 地址。
注意:如果/etc/resolv.conf文件不存在,res_init子例程會嘗試使用本地/etc/hosts文件進行名稱解析。如果系統(tǒng)沒有使用域名服務器,則/etc/resolv.conf文件不應該存在。即使系統(tǒng)正在使用名稱服務器,系統(tǒng)上也應該存在/ etc/hosts文件。在這種情況下,該文件應包含系統(tǒng)運行所需的主機 ID,即使名稱服務器未運行也是如此。
res_init子例程是構(gòu)成解析器的一組子例程之一,解析器是一組將域名轉(zhuǎn)換為 Internet 地址的函數(shù)。所有解析器子例程都使用/usr/include/resolv.h文件,該文件定義了_res結(jié)構(gòu)。res_init子例程將域名信息存儲在_res結(jié)構(gòu)中。三個環(huán)境變量LOCALDOMAIN、RES_TIMEOUT和RES_RETRY影響與_res結(jié)構(gòu)相關(guān)的默認值。
所有包含res_init子例程的應用程序都必須在編譯時將_BSD宏設置為特定值。可接受的值為 43 和 44。此外,所有套接字應用程序都必須包含 BSD libbsd.a庫。

相關(guān)文件

路徑描述
/etc/resolv.conf包含名稱服務器和域名。
/etc/hosts包含網(wǎng)絡中主機的主機名及其地址。此文件用于將主機名解析為 Internet 地址。

🟣引經(jīng)據(jù)典:

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

總結(jié)

以上是生活随笔為你收集整理的【多网段切换导致DNS域名解析失败问题处理】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。