如何将Qt TCP 简单通信为支持的?

摘要:Qt TCP通信 例子 效果 流程 通信分为服务器和客户端 服务器 实例化一个服务器对象 pServer = new QTcpServer; 关联服务器的newConnection信号,当有新的客户端连接时,会发送该信号 connect(p
Qt TCP通信 例子 目录Qt TCP通信 例子效果流程代码源码下载 效果 流程 通信分为服务器和客户端 服务器 实例化一个服务器对象 pServer = new QTcpServer; 关联服务器的newConnection信号,当有新的客户端连接时,会发送该信号 connect(pServer, &QTcpServer::newConnection, this, &TCP::slo_newConnection); 启动监听 pServer->listen(QHostAddress("127.0.0.1"), 8848); 当有客户端建立连接时,在关联newConnection信号,对应的槽函数中获取与对应客户端通信的套接字对象 // 获取与客户端通信的套接字对象 QTcpSocket * tcpSocket = pServer->nextPendingConnection(); 关联套接字的readyRead信号,接收客户端信息,关联套接字的disconnected信号,处理客户端断开连接 // 绑定信号 ,接收客户端消息 connect(tcpSocket, &QTcpSocket::readyRead, this, &TCP::slo_readMsg); // 客户端断开连接 connect(tcpSocket, &QTcpSocket::disconnected,this,&TCP::slo_clientDisConn); 向所有客户端发送消息 // 遍历所有客户端套接字 for (auto socket : mSokets) { socket->write(ui->lineEdit_3->text().toUtf8()); } 关闭监听,直接close() pServer->close(); 客户端 实例化与服务器通信的套接字对象 // 通信的套接字对象 pSokcet = new QTcpSocket(this); 关联套接字的readyRead信号,接收服务器信息 // 关联信号 ,接收服务端的消息 connect(pSokcet, &QTcpSocket::readyRead, this, &TCP_Client::slo_readMsg); 连接服务器 pSokcet->connectToHost(QHostAddress("127.0.0.1"), 8848); 向服务器发送消息 pSokcet->write(ui.lineEdit_3->text().toUtf8()); 接收服务器消息 QString msg = QString::fromUtf8(pSokcet->readAll()); 断开连接 pSokcet->close(); 代码 服务器代码 .h #pragma once #include <QWidget> #include <QtNetwork/QTcpServer> #include <QtNetwork/QTcpSocket> namespace Ui { class TCP; }; class TCP : public QWidget { Q_OBJECT public: TCP(QWidget *parent = Q_NULLPTR); ~TCP(); private slots: void slo_newConnection(); // 新客户端连接 void slo_clientDisConn(); // 客户端断开连接 void slo_listenerStart(); // 开启监听 void slo_listenerStop(); // 关闭监听 void slo_replyAll(); // 回复所有客户端 void slo_readMsg(); // 接收客户端消息 private: void init(); // 初始化 void updateMsg(const QString & msg); // 更新消息 private: Ui::TCP *ui; QTcpServer * pServer; // 服务器对象 QList<QTcpSocket*> mSokets; // 保存和所有客户端通信的套
阅读全文