#include 'procession.h'
#include 'ui_procession.h'

Procession::Procession(int userid, QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Procession),
    userid(userid)
{
    ui->setupUi(this);
    processionWidget();
    m_socket = new QTcpSocket(this);
    connect(ui->connectBtn, &QPushButton::clicked, this, &Procession::on_pushButton_clicked);
    connect(m_socket, &QTcpSocket::readyRead, this, &Procession::readyRead);
    connect(m_socket, &QTcpSocket::connected, this, &Procession::connected);
    connect(m_socket, &QTcpSocket::disconnected, this, &Procession::disconnected);
}

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

void Procession::processionWidget()
{
    setWindowTitle('服务器通信');
    setAutoFillBackground(true);
    QPalette palette = this->palette();
    QPixmap pixmap(':user/image/image/net.jpg');
    palette.setBrush(QPalette::Window, QBrush(pixmap));
    setPalette(palette);
    setFixedSize(600, 400);
}

void Procession::on_pushButton_clicked()
{
    QString ip = ui->IP->text();
    QString port = ui->port->text();

    if (ip.isEmpty() || port.isEmpty()) {
        ui->message->clear();
        ui->message->append('请输入有效的IP地址和端口号');
        return;
    }

    ui->message->clear();
    ui->message->append('正在连接中...');
    m_socket->connectToHost(ip, static_cast<quint16>(ui->port->text().toInt()));
}

void Procession::connected()
{
    ui->message->append('连接成功');
    // 发送userid给服务器
    QByteArray block;
    QDataStream out(&block, QIODevice::WriteOnly);
    out << this->userid;
    m_socket->write(block);
}

void Procession::disconnected()
{
    ui->message->append('连接失败: ' + m_socket->errorString());
    m_socket->close();
}

void Procession::readyRead()
{
    QByteArray data = m_socket->readAll();
    QString suggestion = QString::fromUtf8(data);
    ui->message->append(suggestion);
    // 处理完数据后关闭连接
    m_socket->close();
}
Qt网络编程:使用QTcpSocket实现客户端与服务器通信

原文地址: http://www.cveoy.top/t/topic/fCa7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录