『壹』 使用QT編寫的TCP服務程序,怎麼獲取連接的客戶端IP地址
QTcpSocket * QTcpServer::nextPendingConnection ()
QHostAddress QAbstractSocket::peerAddress ()
『貳』 QT如何運用TCP/IP協議與VC程序通信
cp ip協議中 TCP 跟IP 具體作用 TCP是主機到主機層的協議,它負責從上層獲得數據為之分段、編號、排序。而且使用確認機制,窗口機制,保障了數據的安全傳送。就像是郵局的人郵寄包裹的過程! IP是網際網路層協議,負責查看數據包的IP地址,並且通過路由表網路定址,尋找數據到目的主機的最佳路徑。
『叄』 TCP/IP有幾層,提供什麼互聯網服務
TCP/IP層次模型共分為四層:應用層、傳輸層、網路層、數據鏈路層。
應用層—應用層是所有用戶所面向的應用程序的統稱。ICP/IP協議族在這一層面有著很多協議來支持不同的應用,許多大家所熟悉的基於Internet的應用的實現就離不開這些協議。如我們進行萬維網(WWW)訪問用到了HTTP協議、文件傳輸用FTP協議、電子郵件發送用SMTP、域名的解析用DNS協議、遠程登錄用Telnet協議等等,都是屬於TCP/IP應用層的;就用戶而言,看到的是由一個個軟體所構築的大多為圖形化的操作界面,而實際後台運行的便是上述協議。
* 傳輸層—這一層的的功能主要是提供應用程序間的通信,TCP/IP協議族在這一層的協議有TCP和UDP。
* 網路層—是TCP/IP協議族中非常關鍵的一層,主要定義了IP地址格式,從而能夠使得不同應用類型的數據在Internet上通暢地傳輸,IP協議就是一個網路層協議。
* 網路介面層—這是TCP/IP軟體的最低層,負責接收IP數據包並通過網路發送之,或者從網路上接收物理幀,抽出IP數據報,交給IP層。
1.TCP/UDP協議
TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)協議屬於傳輸層協議。其中TCP提供IP環境下的數據可靠傳輸,它提供的服務包括數據流傳送、可靠性、有效流控、全雙工操作和多路復用。通過面向連接、端到端和可靠的數據包發送。通俗說,它是事先為所發送的數據開辟出連接好的通道,然後再進行數據發送;而UDP則不為IP提供可靠性、流控或差錯恢復功能。一般來說,TCP對應的是可靠性要求高的應用,而UDP對應的則是可靠性要求低、傳輸經濟的應用。TCP支持的應用協議主要有:Telnet、FTP、SMTP等;UDP支持的應用層協議主要有:NFS(網路文件系統)、SNMP(簡單網路管理協議)、DNS(主域名稱系統)、TFTP(通用文件傳輸協議)等。
IP協議的定義、IP地址的分類及特點
什麼是IP協議,IP地址如何表示,分為幾類,各有什麼特點?
為了便於定址和層次化地構造網路,IP地址被分為A、B、C、D、E五類,商業應用中只用到A、B、C三類。
IP協議(Internet Protocol)又稱互聯網協議,是支持網間互連的數據報協議,它與TCP協議(傳輸控制協議)一起構成了TCP/IP協議族的核心。它提供網間連接的完善功能,包括IP數據報規定互連網路范圍內的IP地址格式。
Internet 上,為了實現連接到互聯網上的結點之間的通信,必須為每個結點(入網的計算機)分配一個地址,並且應當保證這個地址是全網唯一的,這便是IP地址。
目前的IP地址(IPv4:IP第4版本)由32個二進制位表示,每8位二進制數為一個整數,中間由小數點間隔,如159.226.41.98,整個IP地址空間有4組8位二進制數,由表示主機所在的網路的地址(類似部隊的編號)以及主機在該網路中的標識(如同士兵在該部隊的編號)共同組成。
為了便於定址和層次化的構造網路,IP地址被分為A、B、C、D、E五類,商業應用中只用到A、B、C三類。
* A類地址:A類地址的網路標識由第一組8位二進制數表示,網路中的主機標識佔3組8位二進制數,A類地址的特點是網路標識的第一位二進制數取值必須為"0"。不難算出,A類地址允許有126個網段,每個網路大約允許有1670萬台主機,通常分配給擁有大量主機的網路(如主幹網)。
* B類地址:B類地址的網路標識由前兩組8位二進制數表示,網路中的主機標識占兩組8位二進制數,B類地址的特點是網路標識的前兩位二進制數取值必須為"10"。B類地址允許有16384個網段,每個網路允許有65533台主機,適用於結點比較多的網路(如區域網)。
* C類地址:C類地址的網路標識由前3組8位二進制數表示,網路中主機標識佔1組8位二進制數,C類地址的特點是網路標識的前3位二進制數取值必須為"110"。具有C類地址的網路允許有254台主機,適用於結點比較少的網路(如校園網)。
為了便於記憶,通常習慣採用4個十進制數來表示一個IP地址,十進制數之間採用句點"."予以分隔。這種IP地址的表示方法也被稱為點分十進製法。如以這種方式表示,A類網路的IP地址范圍為1.0.0.1-127.255.255.254;B類網路的IP地址范圍為:128.1.0.1-191.255.255.254;C類網路的IP地址范圍為:192.0.1.1-223.255.255.254。
由於網路地址緊張、主機地址相對過剩,採取子網掩碼的方式來指定網段號。
TCP/IP協議與低層的數據鏈路層和物理層無關,這也是TCP/IP的重要特點。正因為如此 ,它能廣泛地支持由低兩層協議構成的物理網路結構。目前已使用TCP/IP連接成洲際網、全國網與跨地區網。
『肆』 qt TCP通信的問題
說實話,你急也沒用。一般socket網路都是放到單獨的線程中執行的,然後qt對跨線程通信用的公共類型緩沖隊列策略。 但是你描述的socket不知道是系統的套接字還是qt的網路套件套接字?如果是系統的,那麼這個整型變數是全局的,所以不會出問題。沒代碼,而且你描述的太籠統。
『伍』 qt 使用tcp發送數據
很簡單的,看看Qt的幫助文檔就理解了:
1、在*.pro文件中加入network模塊 QT+= network
2、在你的*.h裡面添加 QTcpSocket
3、連接伺服器地址和埠號tcpSocket->connectToHost("192.168.1.1", 8000);
4、監聽連接成功的信號 SGINAL-->connected()
5、給socket填寫你想發送的數據,封裝成QByteArray
//發送字元串
QByteArraydataSend="Haveatry!";
tcpSocket->write(dataSend);
//發送16進制數據
dataSend.clear();
dataSend[0]=0xa5;
dataSend[1]=0x5a;
dataSend[2]=0xa5;
dataSend[3]=0x5a;
//寫入socket即可
tcpSocket->write(dataSend);
『陸』 QT多線程的TCP伺服器端怎麼實現呢,思路是怎麼樣的
用戶端:Linux(arm平台),完成文件的傳輸
伺服器:Windows ,使用多線程的文件的接收
實現無線的文件傳輸功能
用戶端程序,用標準的socket完成文件傳輸的功能,
『柒』 qt的tcp通信 伺服器和客戶端讀寫數據的問題
首先回答第一個問題,讀和寫可以有多種實現方式,用write和read只是其中一種,前面一個函數中的 clientConnection->write(block)是調用了QTcpSocket 類中的write方法來實現,如果你想不用此方法調用類中的read和write方法,就是你問的第二個問題,in和out的作用,in和out在這里將對socket中的報文收發變為數據流的形式來操作,QDataStream in(tcpSocket)比如這一句是將tcpSocket這個連接的實例對象作為一個文件描述符傳遞給QDataStream,然後 in >> blockSize這句話實現的就是相當於read的操作,就是將數據流讀出來。這個 out << (quint16)(block.size() - sizeof(quint16))是寫入。實際上對諸如串口收發,讀寫文件,socket通信等等,用C語言來寫,抽象出來都是對文件描述符進行操作,都可以用write和read來做,所以,實際上,第一種方法和第二種方法是一樣的,就看你選擇什麼樣的方法了,第三個問題可參考out << (quint16)(block.size() - sizeof(quint16))這樣的方法在收到數據以後把數據發出去。
請給分。。。
『捌』 Qt網路編程 伺服器異常斷開,不能檢查到網路狀態變化
自己做心跳保活。因為異常斷開不屬於qt的處理范圍,而tcp協議棧又不存在自動處理異常斷線的功能,tcp連接在不正常關閉情況下通常都會被協議棧保持存活一段時間(具體和操作系統協議棧實現和設置有關)。qt無法獲得tcp協議棧的狀態消息,也就不會做出任何反應。所謂心跳機制請參照以下網址內容:
http://ke..com/view/4372209.htm
『玖』 Qt Socket網路編程 伺服器端提示QIODevice::read (QTcpSocket): device not open,但是與客戶端連接成功
這是因為文件路徑不對造成的,解決方法如下:
1、首先pro文件配置:Qt網路功能需要在pro文件增加網路庫。
『拾』 求助大神,QT多線程實現TCP通信
QT界面中,點擊開始鍵。
開啟thread線程,建立TCP連接。
並在主線程中運行thread對象中的sendData函數,實現TCP發送數據。