<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      C++ Qt開發(fā):QHostInfo主機(jī)地址查詢組件

      Qt 是一個(gè)跨平臺(tái)C++圖形界面開發(fā)庫(kù),利用Qt可以快速開發(fā)跨平臺(tái)窗體應(yīng)用程序,在Qt中我們可以通過拖拽的方式將不同組件放到指定的位置,實(shí)現(xiàn)圖形化開發(fā)極大的方便了開發(fā)效率,本章將重點(diǎn)介紹如何運(yùn)用QHostInfo組件實(shí)現(xiàn)對(duì)主機(jī)地址查詢功能。

      在Qt網(wǎng)絡(luò)編程中,QHostInfo是一個(gè)強(qiáng)大而靈活的組件,用于獲取有關(guān)主機(jī)的信息,包括主機(jī)名、IP地址和域名解析等。通過支持異步查詢的機(jī)制,它能夠在后臺(tái)獲取主機(jī)信息,避免阻塞主線程,同時(shí)通過信號(hào)-槽機(jī)制提供查詢結(jié)果。其多主機(jī)查詢、可靠的錯(cuò)誤處理和與網(wǎng)絡(luò)環(huán)境的適應(yīng)性,使其成為處理網(wǎng)絡(luò)應(yīng)用中主機(jī)信息獲取的理想選擇。

      以下是QHostInfo類的一些常用函數(shù)的解釋:

      函數(shù) 描述
      QHostInfo() 默認(rèn)構(gòu)造函數(shù),創(chuàng)建一個(gè)空的QHostInfo對(duì)象。
      QHostInfo(const QHostInfo &other) 拷貝構(gòu)造函數(shù),根據(jù)給定的other對(duì)象創(chuàng)建一個(gè)新的對(duì)象。
      QHostInfo &operator=(const QHostInfo &other) 賦值運(yùn)算符,將other對(duì)象的值賦給當(dāng)前對(duì)象。
      QHostInfo &swap(QHostInfo &other) 交換兩個(gè)QHostInfo對(duì)象的值。
      bool isNull() const 判斷QHostInfo對(duì)象是否為空,即未進(jìn)行任何查詢。
      bool isComplete() const 判斷查詢是否完成,返回true表示查詢已完成,false表示正在進(jìn)行中。
      QList<QHostAddress> addresses() const 返回與主機(jī)相關(guān)聯(lián)的IP地址列表。
      QString hostName() const 返回主機(jī)的名稱。
      QStringList aliases() const 返回主機(jī)的別名列表。
      QHostInfo::Error error() const 返回查詢時(shí)發(fā)生的錯(cuò)誤。
      QString errorString() const 返回與錯(cuò)誤代碼對(duì)應(yīng)的人類可讀的錯(cuò)誤字符串。
      static QHostInfo fromName(const QString &name) 根據(jù)主機(jī)名創(chuàng)建QHostInfo對(duì)象。
      static QHostInfo fromAddress(const QHostAddress &address) 根據(jù)IP地址創(chuàng)建QHostInfo對(duì)象。
      static QHostInfo localHostName() 返回本地主機(jī)的QHostInfo對(duì)象。
      void clear() 清空QHostInfo對(duì)象,重置為初始狀態(tài)。
      static void swap(QHostInfo &first, QHostInfo &second) 交換兩個(gè)QHostInfo對(duì)象的值。

      這些函數(shù)提供了對(duì)主機(jī)信息的查詢、獲取和處理的操作。需要注意,很多函數(shù)都是通過異步查詢的方式獲取主機(jī)信息的,因此在使用時(shí)需要通過信號(hào)-槽機(jī)制來獲取查詢結(jié)果。

      在使用這個(gè)模塊時(shí),要確保導(dǎo)入QT+=network模塊,接著來看該如何實(shí)現(xiàn)查詢本機(jī)IP地址,通過調(diào)用QHostInfo::localHostName可以直接獲取到本機(jī)的主機(jī)名,調(diào)用QHostInfo::fromName(hostName)可將該主機(jī)名轉(zhuǎn)換為對(duì)應(yīng)的HostInfo結(jié)構(gòu),當(dāng)具備了這個(gè)結(jié)構(gòu)體以后,就可以通過循環(huán)遍歷addList.count()內(nèi)的所有記錄,并aHost.toString()輸出所有的IP地址表,代碼如下所示;

      // 查詢本機(jī)IP地址
      void MainWindow::on_pushButton_clicked()
      {
          // 本地主機(jī)名
          QString hostName=QHostInfo::localHostName();
          std::cout << hostName.toStdString() << std::endl;
          ui->lineEdit->setText(hostName);
      
          // 查詢主機(jī)IP地址信息
          QHostInfo hostInfo=QHostInfo::fromName(hostName);
      
          QList<QHostAddress> addList=hostInfo.addresses();
          if (!addList.isEmpty())
          for (int i=0;i<addList.count();i++)
          {
              // 每一項(xiàng)是一個(gè)QHostAddress
              QHostAddress aHost=addList.at(i);
      
              // 判斷是否為IPV4
              if(QAbstractSocket::IPv4Protocol==aHost.protocol())
              {
                  ui->listWidget->addItem("IPV4 | " + aHost.toString());
              }
              else
              {
                  ui->listWidget->addItem("IPV6 | " + aHost.toString());
              }
          }
      }
      

      運(yùn)行后讀者可通過點(diǎn)擊查詢數(shù)據(jù)按鈕實(shí)現(xiàn)對(duì)本機(jī)IP地址的獲取,輸出效果如下圖所示;

      QHostInfo組件既可以查詢自身IP地址信息,也可以實(shí)現(xiàn)對(duì)特定域名的IP解析,通過使用QHostInfo::lookupHost則可以實(shí)現(xiàn)查詢特定主機(jī)的地址信息,該函數(shù)需要傳入一個(gè)回調(diào),如下所示我們?cè)诨卣{(diào)函數(shù)內(nèi)查詢主機(jī)所有的IP地址并輸出,其實(shí)現(xiàn)原理與上述方法相同。

      void MainWindow::lookedUpHostInfo(const QHostInfo &host)
      {
          // 每一項(xiàng)是一個(gè)QHostAddress
          QList<QHostAddress> addList=host.addresses();
          if (!addList.isEmpty())
          for (int i=0;i<addList.count();i++)
          {
              QHostAddress aHost=addList.at(i);
      
              // 判斷是否為IPV4
              if(QAbstractSocket::IPv4Protocol==aHost.protocol())
              {
                  ui->listWidget_2->addItem("IPV4 | " + aHost.toString());
              }
              else
              {
                  ui->listWidget_2->addItem("IPV6 | " + aHost.toString());
              }
          }
      }
      

      在查詢時(shí)只需要通過lookupHost調(diào)用即可,如下代碼所示;

      void MainWindow::on_pushButton_2_clicked()
      {
          // 主機(jī)名
          QString hostname=ui->lineEdit_2->text();
          QHostInfo::lookupHost(hostname,this,SLOT(lookedUpHostInfo(QHostInfo)));
      }
      

      運(yùn)行后讀者可通過點(diǎn)擊查詢數(shù)據(jù)按鈕實(shí)現(xiàn)對(duì)特定域名的IP地址獲取,輸出效果如下圖所示;

      posted @ 2024-03-09 08:37  lyshark  閱讀(748)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 日本中文字幕不卡在线一区二区| 色欲色香天天天综合网站免费| 福利视频一区二区在线| 国产精品美女一区二区三| 亚洲av第三区国产精品| 中文字幕在线不卡一区二区| 孟连| 福利一区二区在线视频| 国产成人卡2卡3卡4乱码| 国产精品麻豆中文字幕| 欧美性受xxxx黑人猛交| 国产极品美女高潮抽搐免费网站 | 一本久道中文无码字幕av| 国产乱码一区二区三区免费 | 亚洲中文字幕乱码电影| 精品一区二区三区在线观看l| 国产午夜亚洲精品福利| 久久久精品2019中文字幕之3| 国产精品乱一区二区三区| 国产精品自拍视频第一页| 久久永久视频| 成人啪啪高潮不断观看| 性XXXX视频播放免费直播| 那曲县| 国产h视频在线观看| 国产在线视频不卡一区二区| 日韩A人毛片精品无人区乱码| 国产免费视频一区二区| 久久se精品一区二区三区| 国产av最新一区二区| 国产自产对白一区| 中文字幕日韩精品东京热| 亚洲免费成人av一区| 国产精品久久久久免费观看| 日韩av熟女人妻一区二| 国内自拍小视频在线看| 亚洲欧美成人一区二区三区| 无码AV中文字幕久久专区| 日韩中文字幕在线不卡一区| 欧美老熟妇乱子伦牲交视频| 国产高清在线男人的天堂|