Qt------tcp通讯
在上一节中,我们介绍了tcp的连接,这一节我们实现两者之前的消息发送与接收
ps:代码在上一节基础上添加
1.创建ui,并设计

2.代码编写
1.
隐藏窗口
在客户端连接成功后,隐藏连接界面
2.
显示新窗口
先去
widget.h
包含一下<chat.h>
头文件
1.由于函数结束局部变量会被释放,我们需要在堆上创建元素
2.为了在新窗口
能继续使用原先用于连接的socket
,我们需要修改构造函数
,加入变量


运行结果:
3.
发送和清除函数的编写
-
清除
cppvoid chat::on_clear_button_clicked() { ui->lineEdit->clear(); }
-
发送(客户端)
cppvoid 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.最终效果
