国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

解析 Qt 網絡之FTP 網絡學習基礎

移動開發
Qt 網絡之FTP 網絡學習基礎是本文要介紹的內容,FTP即文件傳輸協議。在本文中有詳細的介紹。先來看內容。

Qt 網絡FTP 網絡學習基礎是本文要介紹的內容,先來可能內容。FTP即File Transfer Protocol,也就是文件傳輸協議。FTP的主要作用,就是讓用戶連接上一個遠程計算機,查看遠程計算機有哪些文件,然后把文件從遠程計算機上拷貝到本地計算機,或者把本地計算機的文件送到遠程計算機上。

Qt中,我們可以使用上一節講述的QNetworkAccessManager和QNetworkReply類來進行FTP 程序的編寫,因為它們用起來很簡單。但是,對于較復雜的FTP操作,Qt還提供了QFtp類,利用這個類,我們很容易寫出一個FTP客戶端程序。下面我們先在幫助中查看這個類。

Qt 網絡之FTP 網絡學習基礎

在QFtp中,所有的操作都對應一個特定的函數,我們可以稱它們為命令。如connectToHost()連接到服務器命令,login()登錄命令,get()下載命令,mkdir()新建目錄命令等。因為QFtp類以異步方式工作,所以所有的這些函數都不是阻塞函數。也就是說,如果一個操作不能立即執行,那么這個函數就會直接返回,直到程序控制權返回Qt事件循環后才真正執行,它們不會影響界面的顯示。

所有的命令都返回一個int 型的編號,使用這個編號讓我們可以跟蹤這個命令,查看其執行狀態。當每條命令開始執行時,都會發出commandStarted()信號,當該命令執行結束時,會發出commandFinished()信號。我們可以利用這兩個信號和命令的編號來獲取命令的執行狀態。當然,我們不想執行每條命令都要記下它的編號,所以我們也可以使用currentCommand()來獲取現在執行的命令,其返回值與命令的對應關系如下圖。

Qt 網絡之FTP 網絡學習基礎

下面我們先看一個簡單的FTP客戶端的例子,然后對它進行擴展。

在這個例子中我們從FTP服務器上下載一個文件并顯示出來。

1、我們新建Qt4 Gui QApplication 。

工程名為“myFtp”,然后選中QtNetwork模塊,最后Base class選擇QWidget 。

2、修改widget.ui文件。

在其中添加一個Text Browser 和一個 Label,效果如下。

Qt 網絡之FTP 網絡學習基礎

3、在main.cpp中進行修改。

為了在程序中可以使用中文,我們在main.cpp中添加頭文件#include <QTextCodec>

并在main()函數中添加代碼:QTextCodec::setCodecForTr(QTextCodec::codecForLocale());

#p#

4、在widget.h中進行修改。

先添加頭文件:#include <QFtp>

再在private中定義對象:QFtp *ftp;

添加私有槽函數:

  1. private slots:  
  2.     void ftpCommandStarted(int);  
  3. void ftpCommandFinished(int,bool); 

5、在widget.cpp中進行更改。

(1)在構造函數中添加代碼:

  1. ftp = new QFtp(this);  
  2.     ftp->connectToHost(“ftp.qt.nokia.com”); //連接到服務器  
  3.     ftp->login();   //登錄  
  4.     ftp->cd(“qt”);   //跳轉到“qt”目錄下  
  5.     ftp->get(“INSTALL”);  //下載“INSTALL”文件  
  6.     ftp->close();   //關閉連接  
  7.     connect(ftp,SIGNAL(commandStarted(int)),  
  8.             this,SLOT(ftpCommandStarted(int)));  
  9.     //當每條命令開始執行時發出相應的信號  
  10.     connect(ftp,SIGNAL(commandFinished(int,bool)),  
  11.             this,SLOT(ftpCommandFinished(int,bool)));  
  12. //當每條命令執行結束時發出相應的信號 

我們在構造函數里執行了幾個FTP的操作,登錄站點,并下載了一個文件。然后我們又關聯了兩個信號和槽,用來跟蹤命令的執行情況。

(2)實現槽函數:

  1. void Widget::ftpCommandStarted(int)  
  2. {  
  3.     if(ftp->currentCommand() == QFtp::ConnectToHost){  
  4.         ui->label->setText(tr(“正在連接到服務器…”));  
  5.     }  
  6.     if (ftp->currentCommand() == QFtp::Login){  
  7.         ui->label->setText(tr(“正在登錄…”));  
  8.     }  
  9.     if (ftp->currentCommand() == QFtp::Get){  
  10.         ui->label->setText(tr(“正在下載…”));  
  11.     }  
  12.     else if (ftp->currentCommand() == QFtp::Close){  
  13.         ui->label->setText(tr(“正在關閉連接…”));  
  14.     }  

每當命令執行時,都會執行ftpCommandStarted()函數,它有一個參數int id,這個id就是調用命令時返回的id,如int loginID = ftp->login(); 這時,我們就可以用if(id == loginID)來判斷執行的是否是login()函數。但是,我們不想為每個命令都設置一個變量來存儲其返回值,所以,我們這里使用了ftp->currentCommand() ,它也能獲取當前執行的命令的類型。在這個函數里我們讓開始不同的命令時顯示不同的狀態信息。

  1. void Widget::ftpCommandFinished(int,bool error)  
  2. {  
  3.     if(ftp->currentCommand() == QFtp::ConnectToHost){  
  4.         if(error) ui->label->setText(tr(“連接服務器出現錯誤:%1″).arg(ftp->errorString()));  
  5.         else ui->label->setText(tr(“連接到服務器成功”));  
  6.     }  
  7.     if (ftp->currentCommand() == QFtp::Login){  
  8.         if(error) ui->label->setText(tr(“登錄出現錯誤:%1″).arg(ftp->errorString()));  
  9.         else ui->label->setText(tr(“登錄成功”));  
  10.     }  
  11.     if (ftp->currentCommand() == QFtp::Get){  
  12.         if(error) ui->label->setText(tr(“下載出現錯誤:%1″).arg(ftp->errorString()));  
  13.         else {  
  14.             ui->label->setText(tr(“已經完成下載”));  
  15.             ui->textBrowser->setText(ftp->readAll());  
  16.         }  
  17.     }  
  18.     else if (ftp->currentCommand() == QFtp::Close){  
  19.         ui->label->setText(tr(“已經關閉連接”));  
  20.     }  

這個函數與ftpCommandStarted()函數相似,但是,它是在一個命令執行結束時執行的。它有兩個參數,第一個int id,就是調用命令時返回的編號,我們在上面已經講過了。第二個是bool error,它標志現在執行的命令是否出現了錯誤。如果出現了錯誤,那么error 為true ,否則為false。我們可以利用它來輸出錯誤信息。在這個函數中,我們在完成一條命令時顯示不同的狀態信息,并顯示可能的出錯信息。在if (ftp->currentCommand() == QFtp::Get) 中,也就是已經完成下載時,我們讓textBrowser顯示下載的信息。

#p#

6、運行程序,效果如下。

登錄狀態。

Qt 網絡之FTP 網絡學習基礎

下載完成后。

Qt 網絡之FTP 網絡學習基礎

7.出錯演示。

下面我們演示一下出錯時的情況。

將構造函數中的代碼ftp->login();改為ftp->login(“tom”,”123456″);

這時我們再運行程序:

Qt 網絡之FTP 網絡學習基礎

可以看到,它輸出了錯誤信息,指明了錯誤的指令和出錯的內容。其實我們設置的這個錯誤,也是想告訴大家,在FTP中如果沒有設置用戶名和密碼,那么默認的用戶名應該是anonymous,這時密碼可以任意填寫,而使用其他用戶名是會出錯的。

在下一節中,我們將會對這個程序進行擴展,讓它可以瀏覽服務器上的所有文件,并進行下載。

本文來自:www.yafeilinux.com   

小結:Qt 網絡之FTP 網絡學習基礎的內容介紹完了,更多內容,請參考編輯推薦。給大家推薦與此文相關的幾篇文章,供您參考。

http://mobile.51cto.com/symbian-268176.htm       qt網絡
http://mobile.51cto.com/symbian-268170.htm       http 編程
http://mobile.51cto.com/symbian-268167_1.htm     獲取網絡地址

責任編輯:zhaolei 來源: 網絡轉載
相關推薦

2011-06-27 09:02:18

Qt UDP 網絡

2011-06-27 10:15:22

Qt 網絡 TCP

2011-06-27 10:28:45

Qt 網絡 TCP

2011-06-02 10:28:18

2011-06-02 14:36:25

Netstat

2011-06-02 10:28:21

Rsh

2011-06-02 11:34:31

Nbtstat

2011-06-02 10:28:15

網絡命令Arp

2011-06-02 14:36:19

Route

2011-06-02 11:21:59

Tftp

2011-06-02 14:36:22

Runas

2011-06-10 12:17:52

Qt 網絡

2011-06-10 12:44:09

2011-06-02 10:28:11

網絡命令

2011-06-10 13:21:00

Qt 網絡

2010-06-28 14:38:12

FTP協議

2019-03-29 10:31:53

2011-06-22 16:18:23

QT 多線程 QSocket

2021-12-03 09:49:59

鴻蒙HarmonyOS應用

2010-06-09 15:23:25

點贊
收藏

51CTO技術棧公眾號

亚洲不卡在线观看| 日韩经典中文字幕一区| 日韩欧美综合一区| 三上悠亚在线观看| 久久人人97超碰com| 乱子伦一区二区| 久久精品主播| 久久久久久高清| 日韩午夜免费| 国产传媒一区| 欧美欧美全黄| 国产不卡一区二区三区在线观看| 最近国产精品视频| 欧美精品久久一区二区| 91精品国产66| 国内精品久久久久久久97牛牛 | 欧美三级xxx| 情趣网站视频在线观看| 亚洲高清久久久| 日本三级电影网| 午夜视频在线观看一区| 青青免费在线视频| 欧美日本一区二区| 福利成人导航| 国产亚洲精品va在线观看| 免费电影日韩网站| 伊人伊成久久人综合网小说| 欧美影视资讯| 久久99久久99精品免观看粉嫩 | 精品中文视频在线| 欧美极品免费| 久久天天躁夜夜躁狠狠躁2022| 精品123区| 九九久久综合网站| 窝窝社区一区二区| 51国产成人精品午夜福中文下载| 亚洲国产高清一区二区三区| 性欧美大战久久久久久久免费观看| 精品综合久久久久久8888| wwwwww欧美| h网站久久久| 亚洲欧美综合v| 伊人精品综合| 91日韩在线播放| 日韩va亚洲va欧美va久久| 久久综合亚洲精品| 国产精品每日更新在线播放网址| 丁香婷婷激情| 欧美视频一区二区在线观看| 亚洲淫性视频| 久久国产精品首页| 国产精品videosex性欧美| 日韩av电影免费观看| 成人深夜在线观看| 日本调教视频在线观看| 欧美日韩中文字幕一区| 性国裸体高清亚洲| 69久久夜色精品国产69乱青草| 欧美一区高清| 男女日批视频在线观看| 亚洲精品视频自拍| 欧美hdxxxxx| 456亚洲影院| 久热综合在线亚洲精品| 日本爱爱免费视频| 欧美日韩一区二区三区免费看| www成人在线视频| 国产精品18久久久久久首页狼 | 午夜dj在线观看高清视频完整版| 视频一区欧美精品| 国产精品嫩草视频| 国产欧美三级电影| 欧美一区二区黄| 国产裸体免费无遮挡| 老司机一区二区| 国产精品无av码在线观看| 麻豆精品蜜桃视频网站| 人成在线免费视频| 久久影视电视剧免费网站清宫辞电视| 亚洲精品蜜桃乱晃| 日本国产中文字幕| 亚洲图片欧美综合| 黄动漫在线看| 欧美日韩成人高清| 欧美大片网址| 欧美国产亚洲一区| 亚洲精品美女免费| 欧美日韩一区二区三区四区在线观看| 精品国产成人av| 国产中文字幕在线| 欧美裸体xxxx极品少妇| 亚洲乱亚洲高清| 日本a在线播放| 91禁外国网站| 国产亚洲人成a在线v网站| 国产欧美日韩专区发布| av一区二区三区四区| 麻豆网站在线免费观看| 欧美专区在线观看| 本田岬高潮一区二区三区| 婷婷在线播放| 99国产盗摄| 亚洲香肠在线观看| 日韩视频一区二区三区四区| 18视频在线观看娇喘| 欧美一区二区三区视频在线 | 欧美暴力调教| 欧美日韩在线观看一区| 一本一道久久a久久精品综合蜜臀| 久久国产精品免费精品3p| 国产女主播自拍| 亚洲第一偷拍网| 亚洲精华国产欧美| 国产一级在线| 2014亚洲精品| 日韩专区视频| 另类小说综合网| 亚洲6080在线| 国产精品美女久久久久久不卡| 少妇高清精品毛片在线视频 | 91麻豆国产福利精品| 在线观看精品| 免费特级黄色片| 中文字幕九色91在线| 国产1区2区3区精品美女| 日本不卡一二三| 又大又硬又爽免费视频| 色偷偷综合社区| 久久综合久久鬼色中文字| 久久不卡日韩美女| 男女av免费观看| 91国内揄拍国内精品对白| 亚洲欧洲日韩在线| 国产精品亚洲人成在99www| 白虎精品一区| av一本久道久久波多野结衣| 5858s免费视频成人| 日本亚洲三级在线| 日韩av中字| 国产视频在线视频| 日韩免费av在线| 日本丶国产丶欧美色综合| 日韩网站在线| 狠狠躁少妇一区二区三区| 青青草成人免费在线视频| 欧美成人午夜免费视在线看片| 国产欧美精品一区二区色综合朱莉| 国产成人aa在线观看网站站| 亚洲精品综合久久中文字幕| 韩日av一区二区| 懂色av色香蕉一区二区蜜桃| 香蕉521av成人网| 亚洲自拍偷拍色图| 精品国内片67194| hitomi一区二区三区精品| 里番精品3d一二三区| 一二三四在线视频观看社区| 国产精品theporn88| 亚洲精品久久视频| 中文字幕av不卡| 欧美午夜不卡| 欧美性理论片在线观看片免费| 怡红院亚洲色图| 91超碰在线电影| 日韩av中文字幕在线播放| 国产精品三级视频| 亚洲免费播放| 国产一区二区三区四区五区3d| 亚洲黄色a v| 国产66精品久久久久999小说| 亚洲精品在线免费观看视频| 91在线视频播放地址| 成人一区不卡| а√天堂中文资源在线bt| 午夜dv内射一区二区| 91免费看片在线| 在线看日韩av| 精品久久香蕉国产线看观看亚洲| 邻居大乳一区二区三区| av中文字幕电影在线看| 红杏一区二区三区| 深爱激情久久| 国产精品一区二区三区av | aⅴ在线免费观看| 日本久久久久久| 日韩欧美国产wwwww| 99久久精品一区| 欧美 日韩 国产一区二区在线视频| 是的av在线| 91在线网站| 日本天堂免费a| 91精品综合久久久久久五月天| 亚洲欧美中文日韩在线| 婷婷夜色潮精品综合在线| 国产91高潮流白浆在线麻豆 | 欧美与黑人午夜性猛交久久久| 欧美日韩国产影片| 亚洲素人一区二区| 国产一区二区福利视频| 97视频热人人精品免费|