淺析Qt網(wǎng)絡(luò)
本篇文章講述Qt網(wǎng)絡(luò)應(yīng)用方面的編程知識(shí)。在開(kāi)始這部分知識(shí)的學(xué)習(xí)之前,你***已經(jīng)擁有了一定的網(wǎng)絡(luò)知識(shí)和Qt的編程基礎(chǔ)。在下面的教程中我們不會(huì)對(duì)一個(gè)常用的網(wǎng)絡(luò)名詞去進(jìn)行詳細(xì)解釋?zhuān)瑢?duì)于不太了解的地方,你可以參考相關(guān)書(shū)籍。不過(guò),你也沒(méi)有必要非得先去學(xué)習(xí)網(wǎng)絡(luò)教材,而后再學(xué)習(xí)本部分內(nèi)容,因?yàn)?strong>Qt提供了簡(jiǎn)單明了的接口函數(shù),使得我們這里并沒(méi)有涉及太多專(zhuān)業(yè)的知識(shí)??赐杲坛毯螅阋苍S會(huì)發(fā)現(xiàn),自己雖然不懂網(wǎng)絡(luò),但卻可以編寫(xiě)網(wǎng)絡(luò)應(yīng)用程序了。我們使用的編程環(huán)境為Windows下基于Qt 4.6.3的Qt Creator 1.3.1 。
下面我們打開(kāi)Qt Creator,在Help頁(yè)面中我們搜索Qt Network Module 關(guān)鍵字,其內(nèi)容如下圖。
在Qt中提供了網(wǎng)絡(luò)模塊(QtNetwork Module)來(lái)用于網(wǎng)絡(luò)程序的開(kāi)發(fā),可以看到,在這里提供了多個(gè)相關(guān)類(lèi)。有用于FTP編程的QFtp類(lèi),用于HTTP編程的QNetworkAccessManager類(lèi)和QNetworkReply類(lèi),用于獲得本機(jī)信息的QHostInfo類(lèi),用于Tcp編程的QTcpServer類(lèi)和QTcpSocket類(lèi),用于UDP編程的QUdpSocket類(lèi),用于網(wǎng)絡(luò)加密的QSslSocket類(lèi),用于網(wǎng)絡(luò)代理的QNetworkProxy類(lèi)等等。
如果你以前就使用過(guò)Qt進(jìn)行網(wǎng)絡(luò)部分編程,或者看過(guò)其他教材上相關(guān)內(nèi)容,你可能會(huì)問(wèn),這里怎么沒(méi)有了QHttp類(lèi)。我們現(xiàn)在搜索QHttp關(guān)鍵字,其內(nèi)容如下。
可以看到這里有一個(gè)警告:
This class is obsolete. It is provided to keep old source code working. We strongly advise against using it in new code.
大概意思是:這個(gè)類(lèi)是過(guò)時(shí)的。它的提供只是為了保證舊的源代碼。我們強(qiáng)烈建議在新代碼中不要使用它。
所以在我們的教程中不會(huì)再講解這個(gè)類(lèi),對(duì)于HTTP部分的編程,我們使用QNetworkAccessManager類(lèi)和QNetworkReply類(lèi) 。
***需要說(shuō)明的是:使用這個(gè)模塊我們需要在工程文件中添加 QT += network ,然后使用時(shí)添加 #include <QtNetwork> 頭文件。
對(duì)于網(wǎng)絡(luò)部分相關(guān)的例子,我們可以查看其演示程序。在Windows的開(kāi)始菜單中選擇Qt Creator的安裝目錄,然后選擇Qt Demo菜單。我們可以在Networking菜單中找到網(wǎng)絡(luò)部分的例子。如下圖。
我們可以運(yùn)行這些例子查看效果,也可以查看它們的幫助文件,如下圖,點(diǎn)擊Documentation即可。
當(dāng)我們對(duì)Qt中的網(wǎng)絡(luò)編程有了一定了解之后,我們就可以開(kāi)始下一步的學(xué)習(xí)了。
【編輯推薦】