《Qt————Tcp通讯》
Qt——tcp通讯
在上一节中,我们介绍了tcp的连接,这一节我们实现两者之前的消息发送与接收
ps:代码在上一节基础上添加
1.创建ui,并设计
2.代码编写
1.
隐藏窗口
在客户端连接成功后,隐藏连接界面
2.
显示新窗口
先去
widget.h
包含一下<chat.h>
头文件
1.由于函数结束局部变量会被释放,我们需要在堆上创建元素
2.为了在新窗口
能继续使用原先用于连接的socket
,我们需要修改构造函数
,加入变量
运行结果:
3.
发送和清除函数的编写
-
清除
void chat::on_clear_button_clicked() {ui->lineEdit->clear(); }
-
发送(客户端)
void chat::on_send_button_clicked() {QByteArray info= ui->lineEdit->text().toUtf8();socket->write(info); }
4.
服务端接收
只用在ui界面加一个lineEdit,用于存放客户端发送的数据
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()));}