QTcp通信

133 阅读1分钟

QTcp.png

~~客户端~~
#include "tcpclientwidget.h"
#include "ui_tcpclientwidget.h"
#include <QDebug>
#include <QHostAddress>
tcpClientWidget::tcpClientWidget(QWidget* parent) : QWidget(parent), ui(new Ui::tcpClientWidget), m_pSocket(nullptr) {
    ui->setupUi(this);
    this->setWindowTitle("Client");
    m_pSocket = new QTcpSocket(this);
    if (m_pSocket == nullptr) {
        qDebug() << "client init failed !";
        return;
    }
    QObject::connect(m_pSocket, &QTcpSocket::readyRead, [=]() { ui->textEditRead->append(m_pSocket->readAll()); });
    QObject::connect(m_pSocket, &QTcpSocket::connected, [=]() { ui->textEditRead->setText("端连接成功!\n"); });
    ui->lineEditIp->setText("127.0.0.1");
    ui->lineEditPort->setText("8888");
}

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

void tcpClientWidget::on_btnSend_clicked() {
    if (m_pSocket == nullptr) return;
    m_pSocket->write(ui->textEditWrite->toPlainText().toUtf8().data());
}

void tcpClientWidget::on_btnClose_clicked() {
    if (m_pSocket == nullptr) return;
    m_pSocket->disconnectFromHost();
    m_pSocket->close();
}

void tcpClientWidget::on_btnConnect_clicked() {
    QString sIp = ui->lineEditIp->text();
    int port = ui->lineEditPort->text().toInt();
    m_pSocket->connectToHost(QHostAddress(sIp), port);
}
~~服务端~~
#include "tcpserverwidget.h"
#include "ui_tcpserverwidget.h"
#include <QDebug>
#include <QByteArray>
tcpServerWidget::tcpServerWidget(QWidget* parent) :
        QWidget(parent), ui(new Ui::tcpServerWidget), m_pServer(nullptr), m_pSocket(nullptr) {
    ui->setupUi(this);
    m_pServer = new QTcpServer(this);
    if (m_pServer == nullptr) {
        qDebug() << " server init fail! ";
        return;
    }
    this->setWindowTitle("Server");
    m_pServer->listen(QHostAddress::Any, 8888);
    QObject::connect(m_pServer, &QTcpServer::newConnection, [=]() {
        m_pSocket = m_pServer->nextPendingConnection();
        QString sIp = m_pSocket->localAddress().toString();
        quint16 port = m_pSocket->localPort();
        QString str{"[client ip:%1-port:%2]客户端连接成功!\n"};
        ui->textEditRead->setText(str.arg(sIp).arg(port));
        QObject::connect(m_pSocket, &QTcpSocket::readyRead, [=]() {
            QByteArray array = m_pSocket->readAll();
            ui->textEditRead->append(array);
        });
    });
}

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

void tcpServerWidget::on_btnSend_clicked() {
    if (m_pSocket == nullptr) return;
    m_pSocket->write(ui->textEditWrite->toPlainText().toUtf8().data());
}

void tcpServerWidget::on_btnClose_clicked() {
    if (m_pSocket == nullptr) return;
    m_pSocket->disconnectFromHost();
    m_pSocket->close();
}