跳转至

TCP 通信

写数据


Qt 提供了用于发送数据的方法 QTcpSocket 下有 write() 方法, 用于写入数据。

其接收的数据为 QByteArray 类型。

// 实例化 QByteArray 对象
QByteArray ba;
// 获取用户输入并且转换为 QByteArray 类型
ba.append(ui->Input_Edit->text());
// 写入数据
socket->write(ba);

读取数据


当服务器收到消息时会发出一个信号, QTcpServer 会发出一个 readyread 信号。

将信号连接至槽函数即可实现对输入消息进行处理。

先声明槽函数
private slots:
    // 客户端收到消息槽函数
    void clientInfoSlot();
连接信号与槽函数
// 是否有接收到消息
connect(socket, &QTcpSocket::readyRead, this, &Widget::clientInfoSlot);
槽函数
void cheat::on_Send_Button_clicked()
{
    // 实例化 QByteArray 对象
    QByteArray ba;
    // 获取当前系统时间
    QDateTime curremt_date = QDateTime::currentDateTime();
    // 获取目标服务器 IP
    QString target_ip = socket->peerAddress().toString();
    // 获取用户输入并且转换为 QByteArray 类型
    ba.append(ui->Input_Edit->text());
    // 写入数据
    socket->write(ba);
    // 提示用户发送的消息
    ui->Message_Edit->insertPlainText("\nSend Data to " + target_ip + " in " + curremt_date.toString("yyyy-MM-dd hh:mm:ss")
    + "\n-> " + ui->Input_Edit->text());
    // 写入完毕清空输入框
    ui->Input_Edit->clear();
}