亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Qt實(shí)現(xiàn)TCP同步與異步讀寫(xiě)消息的示例代碼

 更新時(shí)間:2024年04月24日 09:46:22   作者:鍵盤(pán)會(huì)跳舞  
這篇文章主要為大家詳細(xì)介紹了如何在?Qt?中實(shí)現(xiàn)?TCP?客戶(hù)端和服務(wù)器的同步和異步讀寫(xiě)消息,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下

一、異步讀寫(xiě)

在 Qt 中實(shí)現(xiàn) TCP 客戶(hù)端和服務(wù)器的同步和異步讀寫(xiě)消息涉及使用 QTcpSocket 和 QTcpServer 類(lèi)。這兩個(gè)類(lèi)提供了用于建立 TCP 連接、發(fā)送和接收數(shù)據(jù)的功能。下面是一個(gè)簡(jiǎn)單的示例,演示了如何在 Qt 中實(shí)現(xiàn) TCP 客戶(hù)端和服務(wù)器的同步和異步讀寫(xiě)消息:

TCP 服務(wù)器端示例(異步)

#include <QCoreApplication>
#include <QTcpServer>
#include <QTcpSocket>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QTcpServer server;
    server.listen(QHostAddress::Any, 1234); // 監(jiān)聽(tīng)端口 1234

    QObject::connect(&server, &QTcpServer::newConnection, [&](){
        QTcpSocket* clientSocket = server.nextPendingConnection();
        QObject::connect(clientSocket, &QTcpSocket::readyRead, [&](){
            QByteArray requestData = clientSocket->readAll();
            qDebug() << "Received request from client:" << requestData;

            // Echo back the received data
            clientSocket->write(requestData);
        });
    });

    qDebug() << "TCP server started. Listening on port 1234...";

    return a.exec();
}

TCP 客戶(hù)端端示例(異步)

#include <QCoreApplication>
#include <QTcpSocket>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QTcpSocket client;
    client.connectToHost("127.0.0.1", 1234); // 連接到服務(wù)器的 IP 地址和端口

    QObject::connect(&client, &QTcpSocket::connected, [&](){
        qDebug() << "Connected to server.";

        // Send a message to the server
        client.write("Hello, Server!");
    });

    QObject::connect(&client, &QTcpSocket::readyRead, [&](){
        QByteArray responseData = client.readAll();
        qDebug() << "Received response from server:" << responseData;
    });

    return a.exec();
}

示例簡(jiǎn)單演示了如何在 Qt 中實(shí)現(xiàn) TCP 客戶(hù)端和服務(wù)器的異步讀寫(xiě)消息。在異步通信中,使用信號(hào)和槽機(jī)制來(lái)處理數(shù)據(jù)的接收和發(fā)送。

二、同步讀寫(xiě)

以下是一個(gè)簡(jiǎn)單的示例,演示了如何在 Qt 中實(shí)現(xiàn) TCP 客戶(hù)端和服務(wù)器的同步讀寫(xiě)消息:

TCP 服務(wù)器端示例(同步)

#include <QCoreApplication>
#include <QTcpServer>
#include <QTcpSocket>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QTcpServer server;
    server.listen(QHostAddress::Any, 1234); // 監(jiān)聽(tīng)端口 1234

    if (!server.isListening()) {
        qDebug() << "Failed to start TCP server.";
        return 1;
    }

    QTcpSocket* clientSocket = nullptr;

    while (true) {
        if (server.hasPendingConnections()) {
            clientSocket = server.nextPendingConnection();
            break;
        }
    }

    if (clientSocket) {
        qDebug() << "Client connected.";

        // Read data from client
        QByteArray requestData = clientSocket->readAll();
        qDebug() << "Received request from client:" << requestData;

        // Echo back the received data
        clientSocket->write(requestData);
    }

    return a.exec();
}

TCP 客戶(hù)端端示例(同步)

#include <QCoreApplication>
#include <QTcpSocket>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QTcpSocket client;
    client.connectToHost("127.0.0.1", 1234); // 連接到服務(wù)器的 IP 地址和端口

    if (!client.waitForConnected()) {
        qDebug() << "Failed to connect to server.";
        return 1;
    }

    qDebug() << "Connected to server.";

    // Send a message to the server
    client.write("Hello, Server!");

    if (!client.waitForBytesWritten()) {
        qDebug() << "Failed to write data to server.";
        return 1;
    }

    if (!client.waitForReadyRead()) {
        qDebug() << "Failed to read response from server.";
        return 1;
    }

    // Read response from server
    QByteArray responseData = client.readAll();
    qDebug() << "Received response from server:" << responseData;

    return a.exec();
}

示例簡(jiǎn)單演示了如何在 Qt 中實(shí)現(xiàn) TCP 客戶(hù)端和服務(wù)器的同步讀寫(xiě)消息。在同步通信中,使用 waitForConnected、waitForBytesWritten 和 waitForReadyRead 等方法來(lái)等待連接建立、數(shù)據(jù)寫(xiě)入和數(shù)據(jù)讀取完成。這種方式適用于需要確保數(shù)據(jù)傳輸完整性和順序性的場(chǎng)景。

到此這篇關(guān)于Qt實(shí)現(xiàn)TCP同步與異步讀寫(xiě)消息的示例代碼的文章就介紹到這了,更多相關(guān)Qt TCP同步與異步讀寫(xiě)消息內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語(yǔ)言實(shí)現(xiàn)企業(yè)員工管理系統(tǒng)開(kāi)發(fā)

    C語(yǔ)言實(shí)現(xiàn)企業(yè)員工管理系統(tǒng)開(kāi)發(fā)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)企業(yè)員工管理系統(tǒng)開(kāi)發(fā),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • QT計(jì)算時(shí)間差的方法詳解

    QT計(jì)算時(shí)間差的方法詳解

    這篇文章主要為大家詳細(xì)介紹了利用QT實(shí)現(xiàn)計(jì)算兩個(gè)時(shí)間的時(shí)間差的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • C++實(shí)現(xiàn)大數(shù)相乘算法

    C++實(shí)現(xiàn)大數(shù)相乘算法

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)大數(shù)相乘算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • C++中的Z字形變換問(wèn)題

    C++中的Z字形變換問(wèn)題

    將一個(gè)給定字符串?s?根據(jù)給定的行數(shù)?numRows?,以從上往下、從左到右進(jìn)行?Z?字形排列,這樣一個(gè)需求怎么實(shí)現(xiàn)呢,下面小編給大家?guī)?lái)了C++中的Z字形變換問(wèn)題,需要的朋友可以參考下
    2022-07-07
  • Qt實(shí)現(xiàn)棋盤(pán)游戲

    Qt實(shí)現(xiàn)棋盤(pán)游戲

    這篇文章主要為大家詳細(xì)介紹了Qt實(shí)現(xiàn)棋盤(pán)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C語(yǔ)言關(guān)鍵字auto與register及static專(zhuān)項(xiàng)詳解

    C語(yǔ)言關(guān)鍵字auto與register及static專(zhuān)項(xiàng)詳解

    這篇文章主要解釋了c語(yǔ)言中什么是數(shù)據(jù)類(lèi)型,什么是變量,他們的真正含義是什么。分析了屬性關(guān)鍵字auto,register和static的用法
    2022-07-07
  • C++實(shí)現(xiàn)list增刪查改模擬的示例代碼

    C++實(shí)現(xiàn)list增刪查改模擬的示例代碼

    本文主要介紹了C++實(shí)現(xiàn)list增刪查改模擬,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12
  • C++實(shí)現(xiàn)簡(jiǎn)單的圖書(shū)管理系統(tǒng)

    C++實(shí)現(xiàn)簡(jiǎn)單的圖書(shū)管理系統(tǒng)

    本文給大家分享的是使用C++實(shí)現(xiàn)簡(jiǎn)單的圖書(shū)管理系統(tǒng)的代碼,本系統(tǒng)采用了面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2015-08-08
  • C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的貪吃蛇小游戲

    C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的貪吃蛇小游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的貪吃蛇小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • 詳解C語(yǔ)言中index()函數(shù)和rindex()函數(shù)的用法

    詳解C語(yǔ)言中index()函數(shù)和rindex()函數(shù)的用法

    這篇文章主要介紹了C語(yǔ)言中index()函數(shù)和rndex()函數(shù)的用法,是C語(yǔ)言入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),要的朋友可以參考下
    2015-08-08

最新評(píng)論