#ifndef MAINWINDOW_H #define MAINWINDOW_H

#include #include #include #include #include

namespace Ui { class MainWindow; }

class MainWindow : public QMainWindow { Q_OBJECT

public: explicit MainWindow(QWidget *parent = 0); ~MainWindow();

private slots: void on_pushButton_clicked();

void on_pushButton_2_clicked();

void on_pushButton_3_clicked();

private: Ui::MainWindow *ui; QTcpSocket * tcpSoket; };

#endif // MAINWINDOW_H

#include 'mainwindow.h' #include 'ui_mainwindow.h' #include

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); tcpSoket = nullptr; tcpSoket = new QTcpSocket(this); //创建通信对象

setWindowTitle('socket客户端');

connect(tcpSoket,&QTcpSocket::connected,[=]{
    ui->textEdit->setText(QString('已成功连接上服务器'));

});


connect(tcpSoket,&QTcpSocket::readyRead,[=]{
    QByteArray array = tcpSoket->readAll();

    ui->textEdit->append(array);

});

}

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

//连接 void MainWindow::on_pushButton_clicked() { if(nullptr == ui->lineEdit|| nullptr == ui->lineEdit_2){ qDebug() << '错误:端口号或ip地址为空'; return; }

QString str = ui->lineEdit->text();
qint16 port = ui->lineEdit_2->text().toInt();

//通信套接字,通过协议栈触发
tcpSoket->connectToHost(str,port);

connect(tcpSoket, &QTcpSocket::connected, [=]{
    ui->textEdit->setText(QString('已成功连接上服务器'));

    // 发送userid
    int userid = 1234; // 假设userid为1234
    QByteArray useridData;
    useridData.append(reinterpret_cast<const char*>(&userid), sizeof(userid));
    tcpSoket->write(useridData);

    if (tcpSoket->waitForBytesWritten()) {
        ui->textEdit->append('发送userid成功');
    } else {
        ui->textEdit->append('发送userid失败:' + tcpSoket->errorString());
    }
});

connect(tcpSoket, &QTcpSocket::readyRead, [=]{
    QByteArray array = tcpSoket->readAll();
    ui->textEdit->append(array);
});

}

void MainWindow::on_pushButton_2_clicked() { //如果通信套接字为空,不给予通信流程 if(nullptr == tcpSoket){ return; } QString str = ui->textEdit->toPlainText();

tcpSoket->write(str.toUtf8().data());
ui->textEdit->clear();

}

void MainWindow::on_pushButton_3_clicked() { if(nullptr == tcpSoket){ return; }

tcpSoket->disconnectFromHost();

tcpSoket->close();

tcpSoket = nullptr;

} '}

说明:

  1. 标题: 使用更具描述性的标题,例如 'Qt TCP Socket 客户端:连接服务器并发送 userid'。2. 描述: 描述代码的功能,包括连接服务器、发送 userid、接收数据等,并使用关键词提高搜索排名。3. 关键词: 添加与代码相关的关键词,例如 'Qt', 'TCP Socket', '客户端', '服务器', '连接', '发送数据', '接收数据', 'userid'。4. 内容: - 将双引号改为单引号。 - 代码中添加注释,解释代码的功能和作用。 - 添加代码示例,展示如何使用代码。 - 添加总结,概括代码的功能和应用场景。

**优化后的代码:**cpp#ifndef MAINWINDOW_H#define MAINWINDOW_H

#include #include #include #include #include

namespace Ui {class MainWindow;}

class MainWindow : public QMainWindow{ Q_OBJECT

public: explicit MainWindow(QWidget *parent = 0); ~MainWindow();

private slots: void on_pushButton_clicked(); // 连接服务器按钮

void on_pushButton_2_clicked(); // 发送数据按钮

void on_pushButton_3_clicked(); // 断开连接按钮

private: Ui::MainWindow *ui; QTcpSocket * tcpSoket;};

#endif // MAINWINDOW_H

#include 'mainwindow.h'#include 'ui_mainwindow.h'#include

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); tcpSoket = nullptr; tcpSoket = new QTcpSocket(this); //创建通信对象

setWindowTitle('socket客户端');

connect(tcpSoket,&QTcpSocket::connected,[=]{        ui->textEdit->setText(QString('已成功连接上服务器'));    });

connect(tcpSoket,&QTcpSocket::readyRead,[=]{        QByteArray array = tcpSoket->readAll();        ui->textEdit->append(array);    });}

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

// 连接服务器按钮void MainWindow::on_pushButton_clicked(){ if(nullptr == ui->lineEdit|| nullptr == ui->lineEdit_2){ qDebug() << '错误:端口号或ip地址为空'; return; }

QString str = ui->lineEdit->text();    qint16 port = ui->lineEdit_2->text().toInt();

// 通信套接字,通过协议栈触发    tcpSoket->connectToHost(str,port);

connect(tcpSoket, &QTcpSocket::connected, [=]{        ui->textEdit->setText(QString('已成功连接上服务器'));

    // 发送userid        int userid = 1234; // 假设userid为1234        QByteArray useridData;        useridData.append(reinterpret_cast<const char*>(&userid), sizeof(userid));        tcpSoket->write(useridData);

    if (tcpSoket->waitForBytesWritten()) {            ui->textEdit->append('发送userid成功');        } else {            ui->textEdit->append('发送userid失败:' + tcpSoket->errorString());        }    });

connect(tcpSoket, &QTcpSocket::readyRead, [=]{        QByteArray array = tcpSoket->readAll();        ui->textEdit->append(array);    });}

// 发送数据按钮void MainWindow::on_pushButton_2_clicked(){ //如果通信套接字为空,不给予通信流程 if(nullptr == tcpSoket){ return; } QString str = ui->textEdit->toPlainText();

tcpSoket->write(str.toUtf8().data());    ui->textEdit->clear();}

// 断开连接按钮void MainWindow::on_pushButton_3_clicked(){ if(nullptr == tcpSoket){ return; }

tcpSoket->disconnectFromHost();

tcpSoket->close();

tcpSoket = nullptr
Qt TCP Socket 客户端:连接服务器并发送 userid

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

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