《Qt————Tcp通讯》

Qt------tcp通讯

在上一节中,我们介绍了tcp的连接,这一节我们实现两者之前的消息发送与接收
ps:代码在上一节基础上添加

1.创建ui,并设计



2.代码编写

1.隐藏窗口

在客户端连接成功后,隐藏连接界面

2.显示新窗口

先去widget.h包含一下<chat.h>头文件

1.由于函数结束局部变量会被释放,我们需要在堆上创建元素

2.为了在新窗口继续使用原先用于连接的socket,我们需要修改构造函数,加入变量

运行结果:

3.发送和清除函数的编写

  1. 清除

    cpp 复制代码
    void chat::on_clear_button_clicked()
    {
        ui->lineEdit->clear();
    }
  2. 发送(客户端)

    cpp 复制代码
    void chat::on_send_button_clicked()
    {
        QByteArray info= ui->lineEdit->text().toUtf8();
        socket->write(info);
    }

4.服务端接收

只用在ui界面加一个lineEdit,用于存放客户端发送的数据

cpp 复制代码
void Widget::newclientHandler()
{
    //建立tcp连接
    QTcpSocket *socket=server->nextPendingConnection();
    //显示
    ui->ip_line->setText(socket->peerAddress().toString());//获取客户端的ip地址,并显示在ip_line上
    ui->port_line->setText(QString::number(socket->peerPort()));//获取客户端端口号,并显示在port_line上
    connect(socket,&QTcpSocket::readyRead,this,&Widget::rec_slot);
}
void Widget::rec_slot()
{
    //获取信号发出者
    QTcpSocket * s=(QTcpSocket*)sender();
    ui->rec_line->setText(QString(s->readAll()));

}

3.最终效果