#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() { if (m_socket->state() == QAbstractSocket::ConnectedState) { ui->message->append('已经连接上服务器'); return; }

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; if (m_socket->write(block) == -1) { ui->message->append('发送userid失败'); m_socket->close(); } }

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

void Procession::readyRead() { QByteArray data = m_socket->readAll(); if (data.isEmpty()) { ui->message->append('读取的数据为空'); return; } // 解析服务器返回的数据 QDataStream in(&data, QIODevice::ReadOnly); QString suggestion; if (!(in >> suggestion)) { ui->message->append('解析服务器返回的数据失败'); return; } ui->message->append(suggestion); m_socket->close(); }


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

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