国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Qt網(wǎng)絡(luò)編程】實現(xiàn)TCP協(xié)議通信

這篇具有很好參考價值的文章主要介紹了【Qt網(wǎng)絡(luò)編程】實現(xiàn)TCP協(xié)議通信。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

概要:本期主要講解QT中對于TCP協(xié)議通信的實現(xiàn)。

一、TCP協(xié)議

傳輸控制協(xié)議(TCP,Transmission Control Protocol)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,由IETF的RFC 793 定義。
TCP建立連接前,需要進(jìn)行三次握手,如下圖所示:
qt tcp,# QT 進(jìn)階教程,網(wǎng)絡(luò),tcp/ip,qt
TCP斷開連接前,需要進(jìn)行四次揮手,如下圖所示:

qt tcp,# QT 進(jìn)階教程,網(wǎng)絡(luò),tcp/ip,qt

二、Qt中TCP協(xié)議處理

Qt中提供了QTcpSocket類和QTcpServer類分別用于創(chuàng)建TCP套接字和TCP服務(wù)器套接字。

1.QTcpSocket

QTcpSocket類繼承與QAbstractSocket,主要提供了socket套接字的創(chuàng)建、綁定端口、連接服務(wù)器等。
qt tcp,# QT 進(jìn)階教程,網(wǎng)絡(luò),tcp/ip,qt

2.QTcpServer

QTcpServer類繼承于QSctpServer,主要提供了對于TCP連接信號的響應(yīng)和監(jiān)聽等。
qt tcp,# QT 進(jìn)階教程,網(wǎng)絡(luò),tcp/ip,qt

三、Qt實現(xiàn)TCP通信

1.客戶端

客戶端是發(fā)送端,主要實現(xiàn)與服務(wù)器端建立連接、發(fā)送數(shù)據(jù)。步驟如下:
建立TCP套接字 --> 連接服務(wù)器 --> 發(fā)送數(shù)據(jù)
下面是客戶端的源碼:

#ifndef TCPCLIENT_H
#define TCPCLIENT_H

#include <QObject>
#include <QTcpSocket>
#include <QHostAddress>
#include <QDebug>
#include <QTimer>

class TCPClient : QObject
{
    Q_OBJECT
public:
    TCPClient();

    void InitSocket();//初始化Socket套接字

    void InitTimer();//初始化定時器,定時發(fā)送

    void ConnectToServer();//連接服務(wù)器

    void SendData();//發(fā)送數(shù)據(jù)

private:
    QTcpSocket *mTcpSocket;//Tcp連接套接字
    QHostAddress mServerAddress;//服務(wù)器IP
    QTimer *mTimer;//定時器對象

};

#endif // TCPCLIENT_H

#include "tcpclient.h"

TCPClient::TCPClient()
{
    InitSocket();
    ConnectToServer();
    InitTimer();

}

void TCPClient::InitSocket()
{
    mTcpSocket = new QTcpSocket;//初始化Tcp連接套接字
    mServerAddress.setAddress("10.0.0.177");//設(shè)置服務(wù)器地址
}

void TCPClient::InitTimer()
{
    mTimer = new QTimer;//初始化定時器對象
    connect(mTimer,&QTimer::timeout,this,[=]
    {
        SendData();
    });
    mTimer->start(1000);//每隔一秒發(fā)送一次數(shù)據(jù)
}

void TCPClient::ConnectToServer()
{
    quint16 _port = 7777;//設(shè)置服務(wù)器端口
    connect(mTcpSocket,&QTcpSocket::connected,this,[=]{
        qDebug()<< "Connect To Server Successful!"<<endl;
    });
    mTcpSocket->connectToHost(mServerAddress,_port,QIODevice::WriteOnly);//連接服務(wù)器

}

void TCPClient::SendData()
{
    QByteArray _data = "hello";
    if(-1 != mTcpSocket->write(_data.data(),_data.length()))
    {
        qDebug()<< "TCP ==> Send data : "<< _data<<endl;
    }
    mTcpSocket->flush();
}

2.服務(wù)器端

服務(wù)器端是接收端,主要實現(xiàn)監(jiān)聽連接信號,建立連接和接收數(shù)據(jù)。步驟如下:
建立監(jiān)聽套接字 --> 連接到客戶端 --> 獲得連接套接字 --> 接收數(shù)據(jù)
下面是服務(wù)器端源碼:

#ifndef TCPSEVER_H
#define TCPSEVER_H

#include <QObject>
#include <QHostAddress>
#include <QTcpServer>
#include <QTcpSocket>
#include <QDebug>

class TCPSever : QObject
{
    Q_OBJECT
public:
    TCPSever();
    void InitServer();//初始化服務(wù)器
private:
    QTcpServer *mTcpServer;//服務(wù)器對象
    QTcpSocket *mTcpSocket;//客戶端套接字
    QHostAddress mHostAddress;//本地IP地址

};

#endif // TCPSEVER_H
#include "tcpsever.h"

TCPSever::TCPSever()
{
    InitServer();
}

void TCPSever::InitServer()
{
    mTcpServer = new QTcpServer(this);//初始化監(jiān)聽套接字
    mTcpSocket = new QTcpSocket;//初始化連接套接字
    mHostAddress.setAddress("10.0.0.177");//設(shè)置監(jiān)聽網(wǎng)卡IP
    quint16 _port = 7777;//設(shè)置監(jiān)聽端口
    mTcpServer->listen(mHostAddress,_port);//監(jiān)聽指定網(wǎng)卡和端口
    qDebug()<<"Listen Interface ["<<mHostAddress.toString()<<"] And Port ["<<_port<<"] Successful!"<<endl;
    connect(mTcpServer,&QTcpServer::newConnection,this,[=]{
        mTcpSocket = mTcpServer->nextPendingConnection();//獲取連接套接字
        qDebug()<<"Connect To Client Successful!"<<endl;

        connect(mTcpSocket,&QTcpSocket::readyRead,this,[=]{//讀取消息
            QByteArray _data = mTcpSocket->readAll();
            qDebug()<<"TCP Receive Data : "<<QString::fromLatin1(_data)<<endl;
        });
    });

}

結(jié)尾

以上就是QT中TCP通信模塊的全部內(nèi)容,然后上面的源碼可以直接編,但是記得去PRO文件中加入network模塊:)文章來源地址http://www.zghlxwxcb.cn/news/detail-595452.html

到了這里,關(guān)于【Qt網(wǎng)絡(luò)編程】實現(xiàn)TCP協(xié)議通信的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Java】--網(wǎng)絡(luò)編程:基于TCP協(xié)議的網(wǎng)絡(luò)通信

    【Java】--網(wǎng)絡(luò)編程:基于TCP協(xié)議的網(wǎng)絡(luò)通信

    TCP協(xié)議(Transmission Control Protocol),即傳輸控制協(xié)議,是一種 面向連接 的, 可靠 的,基于 字節(jié)流 的傳輸層通信協(xié)議。數(shù)據(jù)大小無限制。 建立連接的過程需要 三次握手 。 斷開連接的過程需要 四次揮手 。 使用TCP協(xié)議的通信雙方分別為 客戶端 和 服務(wù)器端 。 客戶端負(fù)責(zé)向服務(wù)

    2024年01月23日
    瀏覽(40)
  • 【網(wǎng)絡(luò)編程】網(wǎng)絡(luò)通信基礎(chǔ)——簡述TCP/IP協(xié)議

    【網(wǎng)絡(luò)編程】網(wǎng)絡(luò)通信基礎(chǔ)——簡述TCP/IP協(xié)議

    個人主頁:兜里有顆棉花糖 歡迎 點贊?? 收藏? 留言? 加關(guān)注??本文由 兜里有顆棉花糖 原創(chuàng) 收錄于專欄【網(wǎng)絡(luò)編程】【Java系列】 本專欄旨在分享學(xué)習(xí)網(wǎng)絡(luò)編程的一點學(xué)習(xí)心得,歡迎大家在評論區(qū)交流討論?? ip地址簡單來說就是用來描述網(wǎng)絡(luò)上一個設(shè)備的所在位置。 端

    2024年02月04日
    瀏覽(36)
  • Qt中的網(wǎng)絡(luò)編程(TCP)

    Qt中的網(wǎng)絡(luò)編程(TCP)

    在Qt中網(wǎng)絡(luò)編程主要由Qt Network模塊來編寫基于TCP/Ip的網(wǎng)絡(luò)程序,其中提供了許多的類: 可以點擊該鏈接查看:Qt網(wǎng)絡(luò)C++類|Qt網(wǎng)絡(luò) 5.15.12 ?常見的有: QTcpServer 基于 TCP 的服務(wù)器 QTcpSocket TCP 套接字 QUdpSocket UDP 套接字 QDtls 此類為 UDP 套接字提供加密 QHostAddress IP地址 QHostInfo 用于主

    2024年02月07日
    瀏覽(19)
  • 網(wǎng)絡(luò)編程day2——基于TCP/IP協(xié)議的網(wǎng)絡(luò)通信

    ? ? ? ? 計算機(jī)S ? ? ? ? ? ? ? ? ? ? ? ? ????????????????????????計算機(jī)C ? ? ?創(chuàng)建socket對象 ? ? ? ? ? ? ? ? ????????????????? 創(chuàng)建socket對象 ? ? ?準(zhǔn)備通信地址(自己的ip(非公網(wǎng)ip))? ? ? 準(zhǔn)備通信地址 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (計算

    2024年02月10日
    瀏覽(40)
  • QT網(wǎng)絡(luò)編程TCP/UDP開發(fā)流程 制作網(wǎng)絡(luò)調(diào)試助手

    QT網(wǎng)絡(luò)編程TCP/UDP開發(fā)流程 制作網(wǎng)絡(luò)調(diào)試助手

    1、QT的網(wǎng)絡(luò)編程: TCP和UDP TCP編程需要用到倆個類: QTcpServer 和 QTcpSocket QTcpSocket類 提供了一個TCP套接字 QTcpSocket是QAbstractSocket的一個子類,它允許您建立TCP連接和傳輸數(shù)據(jù)流 注意:TCP套接字不能在QIODevice::Unbuffered模式下打開。 QTcpServer類 提供一個基于tcp的服務(wù)器 2. 這個類可以接

    2023年04月08日
    瀏覽(15)
  • Java網(wǎng)絡(luò)編程之IP,端口號,通信協(xié)議(UDP,TCP)

    Java網(wǎng)絡(luò)編程之IP,端口號,通信協(xié)議(UDP,TCP)

    ① C/S :客戶端/服務(wù)器 在用戶本地需要下載安裝客戶端程序,在遠(yuǎn)程有一個服務(wù)器端程序。 優(yōu)點:畫面精美,用戶體驗好 缺點:用戶需要下載更新 ② B/S :瀏覽器/服務(wù)器 只需要一個瀏覽器,用戶通過指定網(wǎng)址訪問對應(yīng)的服務(wù)器。 優(yōu)點:不需要開發(fā)客戶端,只需要頁面+服務(wù)

    2024年02月03日
    瀏覽(96)
  • 網(wǎng)絡(luò)編程——深入理解TCP/IP協(xié)議——OSI模型和TCP/IP模型:構(gòu)建網(wǎng)絡(luò)通信的基石

    網(wǎng)絡(luò)編程——深入理解TCP/IP協(xié)議——OSI模型和TCP/IP模型:構(gòu)建網(wǎng)絡(luò)通信的基石

    TCP/IP協(xié)議,即 傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議 ,是一組用于在計算機(jī)網(wǎng)絡(luò)中實現(xiàn)通信的協(xié)議。它由兩個主要的協(xié)議組成:TCP(傳輸控制協(xié)議)和IP(互聯(lián)網(wǎng)協(xié)議)。TCP負(fù)責(zé)確保數(shù)據(jù)的可靠傳輸,而IP則負(fù)責(zé)路由數(shù)據(jù)包以在網(wǎng)絡(luò)中傳遞。TCP/IP協(xié)議簇還包含其他輔助協(xié)議,如UDP(用戶數(shù)

    2024年02月14日
    瀏覽(32)
  • 基于UDP/TCP的網(wǎng)絡(luò)通信編程實現(xiàn)

    基于UDP/TCP的網(wǎng)絡(luò)通信編程實現(xiàn)

    紅色是心中永不褪色的赤誠 操作系統(tǒng)為網(wǎng)絡(luò)編程提供了 Socket api , Socket是基于TCP/IP協(xié)議的網(wǎng)絡(luò)通信的基本單元, 基于Socket的網(wǎng)絡(luò)程序開發(fā)就是 網(wǎng)絡(luò)編程. 由于直接與應(yīng)用層聯(lián)系的是傳輸層, 所以針對應(yīng)用層協(xié)議(TCP, UDP), Shocket提供了三種套接字, 分別是 流套接字(使用TCP) , 數(shù)據(jù)報

    2024年02月08日
    瀏覽(33)
  • 「網(wǎng)絡(luò)編程」第二講:網(wǎng)絡(luò)編程socket套接字(三)_ 簡單TCP網(wǎng)絡(luò)通信程序的實現(xiàn)

    「網(wǎng)絡(luò)編程」第二講:網(wǎng)絡(luò)編程socket套接字(三)_ 簡單TCP網(wǎng)絡(luò)通信程序的實現(xiàn)

    「前言」文章是關(guān)于網(wǎng)絡(luò)編程的socket套接字方面的,上一篇是網(wǎng)絡(luò)編程socket套接字(二),下面開始講解!? 「歸屬專欄」網(wǎng)絡(luò)編程 「主頁鏈接」個人主頁 「筆者」楓葉先生(fy) 「楓葉先生有點文青病」「每篇一句」 I?do?not?know?where?to?go,but?I?have?been?on?the?road. 我不知

    2024年02月11日
    瀏覽(29)
  • [Qt網(wǎng)絡(luò)編程]之UDP通訊的簡單編程實現(xiàn)

    [Qt網(wǎng)絡(luò)編程]之UDP通訊的簡單編程實現(xiàn)

    hello!歡迎大家來到我的Qt學(xué)習(xí)系列之 網(wǎng)絡(luò)編程之UDP通訊的簡單編程實現(xiàn)。 希望這篇文章能對你有所幫助?。?! 本篇文章的相關(guān)知識請看我的上篇文章: 目錄 UDP通訊 ?基于主窗口的實現(xiàn) ?基于線程的實現(xiàn) ???????? UDP數(shù)據(jù)報協(xié)議是一個面向無連接的傳輸層報文協(xié)議 ,它簡

    2024年04月25日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包