时间记录:2024/1/17
pro文件添加模块network
一、TCP服务端
(1)创建TCP服务器对象QTcpServer
(2)为QTcpServer对象的newConnection信号绑定槽,用来监听TCP客户端的新连接,有新的客户端连接便会触发此信号
(3)使用nextPendingConnection方法获取连接的Tcp客户端对象QTcpSocket
(4)为QTcpSocket的readReady信号绑定槽,用来读取客户端发送到服务器端的消息,每次客户端有新消息发送,服务器端便会触发此信号
(5)QTcpSocket的stateChanged信号可以用来监听客户端连接状态,槽函数中sender方法获取触发信号的对象,当检测到客户端连接断开时使用deleteLater方法清理对象内存,防止内存溢出
(6)获取连接的客户端IP和端口,使用QTcpSocket类的peerAddress方法和peerPort方法
(7)使用QTcpSocket对象的read和write方法与客户端进行数据的收发
(8)QTcpServer类的findChildren方法可以获取连接的所有客户端对象
(9)QTcpServer类的listen方法用于监听本机IP和端口,即启动服务器
(10)QTcpServer类的close方法用于停止监听连接,表示不会有新的连接能连上,但是已经连接的客户端依旧可以发送信息
二、TCP客户端
(1)创建TCP客户端对象QTcpSocket
(2)为readReady信号绑定槽函数,监听数据的到来
(3)为stateChanged信号绑定槽函数,监听连接的状态变化
(4)使用write和read方法发送和读取信息
(5)使用bind方法绑定IP和端口
(6)使用connectToHost方法连接指定的服务器
(7)使用disconnectFromHost方法断开与服务器之间的连接
三、UDP通信
(1)创建UDP对象QUdpSocket
(2)为readReady信号绑定槽函数
(3)pendingDatagramSize方法获取接收到的数据大小
(4)hasPendingDatagrams方法判断是否有数据报到来
(5)readDatagram方法读取指定IP和端口发送过来的数据报
(6)bind方法绑定本机IP和端口号,即建立连接
(7)abort方法解除绑定,即断开连接
(8)writeDatagram方法向指定IP和端口的主机发送数据报,QHostAddress::Broadcast表示向局域网的所有IP指定端口发送数据报,即广播
四、QT实现单例模式
1.头文件文章来源:https://www.toymoban.com/news/detail-799562.html
public:
static MWidget *getInstance();
private:
MWidget(QWidget *parent = nullptr);
~MWidget();
static MWidget *instance;
2.源文件文章来源地址https://www.toymoban.com/news/detail-799562.html
MWidget *MWidget::instance = nullptr;
MWidget *MWidget::getInstance()
{
if(instance==nullptr)
instance = new MWidget;
return instance;
}
到了这里,关于QT网络通信-TCP、UDP通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!