客户端

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTcpSocket>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;

    QTcpSocket *m_pSoc;
};
#endif // MAINWINDOW_H

main.cpp

#include "mainwindow.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

mainwindow.cpp

#pragma execution_character_set("utf-8")

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QHostAddress>


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ui->lineEdit_IP->setText("127.0.0.1");
    ui->lineEdit_Port->setText("8080");

    m_pSoc = new QTcpSocket(this);

    //连接服务器
    m_pSoc->connectToHost(QHostAddress(ui->lineEdit_IP->text()), ui->lineEdit_Port->text().toInt());

    //接收数据
    connect(m_pSoc, &QTcpSocket::readyRead, [=]{
        QByteArray array = m_pSoc->readAll();
        ui->textEdit_Record->append(array);
    });

    connect(ui->btnSend, &QPushButton::clicked, [=]{
        QString msg = ui->textEdit_Msg->toPlainText();
        m_pSoc->write(msg.toUtf8());

        ui->textEdit_Record->append("我是客户端:" + msg);
        ui->textEdit_Msg->clear();
    });
}

MainWindow::~MainWindow()
{
    delete ui;
}

服务端

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTcpServer>
#include <QTcpSocket>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;

    QTcpServer *m_pServer;   //监听
    QTcpSocket *m_pSoc;      //通信
};
#endif // MAINWINDOW_H

main.cpp

#include "mainwindow.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

mainwindow.cpp

#pragma execution_character_set("utf-8")

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QHostAddress>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ui->lineEdit_IP->setText("127.0.0.1");
    ui->lineEdit_Port->setText("8080");
    m_pServer = new QTcpServer(this);

    //监听
    m_pServer->listen(QHostAddress(ui->lineEdit_IP->text()), ui->lineEdit_Port->text().toUInt());

    //检测是否有新的连接
    connect(m_pServer, &QTcpServer::newConnection, [=]{
        m_pSoc = m_pServer->nextPendingConnection();
        ui->textEdit_Record->append("client connect....");

        connect(m_pSoc, &QTcpSocket::readyRead,[=]{
            QByteArray msg = m_pSoc->readAll();
            ui->textEdit_Record->append(msg);
        });
    });

    //给客户端发送消息
    connect(ui->btnSend, &QPushButton::clicked, [=]{
        QString msg = ui->textEdit_Msg->toPlainText();
        m_pSoc->write(msg.toUtf8());

        ui->textEdit_Record->append("我是服务端:" + msg);
        ui->textEdit_Msg->clear();
    });
}

MainWindow::~MainWindow()
{
    delete ui;
}

界面

在这里插入图片描述
在这里插入图片描述

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐