欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一、異步讀寫

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

TCP 服務器端示例(異步)

#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)聽端口 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 客戶端端示例(異步)

#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); // 連接到服務器的 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();
}

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

二、同步讀寫

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

TCP 服務器端示例(同步)

#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)聽端口 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 客戶端端示例(同步)

#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); // 連接到服務器的 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();
}

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

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

相關文章

  • C語言中對字母進行大小寫轉換的簡單方法

    C語言中對字母進行大小寫轉換的簡單方法

    這篇文章主要介紹了C語言中對字母進行大小寫轉換的簡單方法,是C語言入門學習中的基礎知識,需要的朋友可以參考下
    2015-08-08
  • 美化你的代碼 vb(VBS)代碼格式化的實現(xiàn)代碼

    美化你的代碼 vb(VBS)代碼格式化的實現(xiàn)代碼

    雖然VB.NET出現(xiàn)很久了,但還有好多人仍然在使用VB6。我在實現(xiàn)一些小功能的時候也喜歡用VB6,畢竟誰都不想每天的美好心情被VS那烏龜般的啟動速度影響
    2012-05-05
  • C語言實現(xiàn)萬年歷效果

    C語言實現(xiàn)萬年歷效果

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)萬年歷效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • c++ vector模擬實現(xiàn)代碼

    c++ vector模擬實現(xiàn)代碼

    vector是C++ STL中一個非常重要的容器,了解 vector 的底層實現(xiàn)原理,可以很好的幫助我們更加熟練的使用vector。這篇文章通過實例代碼給大家介紹c++ vector模擬實現(xiàn),感興趣的朋友跟隨小編一起看看吧
    2020-02-02
  • socket多人聊天程序C語言版(二)

    socket多人聊天程序C語言版(二)

    這篇文章主要為大家詳細介紹了socket多人聊天程序C語言版第二篇,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • C語言實現(xiàn)點菜系統(tǒng)

    C語言實現(xiàn)點菜系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)點菜系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • QT使用QComBox和QLineEdit實現(xiàn)模糊查詢功能

    QT使用QComBox和QLineEdit實現(xiàn)模糊查詢功能

    模糊查詢是指根據用戶輸入的文本,在下拉框的選項中進行模糊匹配,并動態(tài)地顯示匹配的選項,本文將使用QComBox和QLineEdit實現(xiàn)模糊查詢功能,需要的可以參考下
    2023-11-11
  • 使用c語言判斷100以內素數(shù)的示例(c語言求素數(shù))

    使用c語言判斷100以內素數(shù)的示例(c語言求素數(shù))

    這篇文章主要介紹了使用c語言判斷100以內素數(shù)的示例(c語言求素數(shù)),需要的朋友可以參考下
    2014-03-03
  • C++中的重載、覆蓋、隱藏介紹

    C++中的重載、覆蓋、隱藏介紹

    這篇文章主要介紹了C++中的重載、覆蓋、隱藏介紹,需要的朋友可以參考下
    2015-04-04
  • C語言實現(xiàn)進程間通信原理解析

    C語言實現(xiàn)進程間通信原理解析

    這篇文章主要介紹了C語言實現(xiàn)進程間通信原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06

最新評論