時(shí)間記錄:2024/1/17
pro文件添加模塊network
一、TCP服務(wù)端
(1)創(chuàng)建TCP服務(wù)器對(duì)象QTcpServer
(2)為QTcpServer對(duì)象的newConnection信號(hào)綁定槽,用來監(jiān)聽TCP客戶端的新連接,有新的客戶端連接便會(huì)觸發(fā)此信號(hào)
(3)使用nextPendingConnection方法獲取連接的Tcp客戶端對(duì)象QTcpSocket
(4)為QTcpSocket的readReady信號(hào)綁定槽,用來讀取客戶端發(fā)送到服務(wù)器端的消息,每次客戶端有新消息發(fā)送,服務(wù)器端便會(huì)觸發(fā)此信號(hào)
(5)QTcpSocket的stateChanged信號(hào)可以用來監(jiān)聽客戶端連接狀態(tài),槽函數(shù)中sender方法獲取觸發(fā)信號(hào)的對(duì)象,當(dāng)檢測(cè)到客戶端連接斷開時(shí)使用deleteLater方法清理對(duì)象內(nèi)存,防止內(nèi)存溢出
(6)獲取連接的客戶端IP和端口,使用QTcpSocket類的peerAddress方法和peerPort方法
(7)使用QTcpSocket對(duì)象的read和write方法與客戶端進(jìn)行數(shù)據(jù)的收發(fā)
(8)QTcpServer類的findChildren方法可以獲取連接的所有客戶端對(duì)象
(9)QTcpServer類的listen方法用于監(jiān)聽本機(jī)IP和端口,即啟動(dòng)服務(wù)器
(10)QTcpServer類的close方法用于停止監(jiān)聽連接,表示不會(huì)有新的連接能連上,但是已經(jīng)連接的客戶端依舊可以發(fā)送信息
二、TCP客戶端
(1)創(chuàng)建TCP客戶端對(duì)象QTcpSocket
(2)為readReady信號(hào)綁定槽函數(shù),監(jiān)聽數(shù)據(jù)的到來
(3)為stateChanged信號(hào)綁定槽函數(shù),監(jiān)聽連接的狀態(tài)變化
(4)使用write和read方法發(fā)送和讀取信息
(5)使用bind方法綁定IP和端口
(6)使用connectToHost方法連接指定的服務(wù)器
(7)使用disconnectFromHost方法斷開與服務(wù)器之間的連接
三、UDP通信
(1)創(chuàng)建UDP對(duì)象QUdpSocket
(2)為readReady信號(hào)綁定槽函數(shù)
(3)pendingDatagramSize方法獲取接收到的數(shù)據(jù)大小
(4)hasPendingDatagrams方法判斷是否有數(shù)據(jù)報(bào)到來
(5)readDatagram方法讀取指定IP和端口發(fā)送過來的數(shù)據(jù)報(bào)
(6)bind方法綁定本機(jī)IP和端口號(hào),即建立連接
(7)abort方法解除綁定,即斷開連接
(8)writeDatagram方法向指定IP和端口的主機(jī)發(fā)送數(shù)據(jù)報(bào),QHostAddress::Broadcast表示向局域網(wǎng)的所有IP指定端口發(fā)送數(shù)據(jù)報(bào),即廣播
四、QT實(shí)現(xiàn)單例模式
1.頭文件文章來源:http://www.zghlxwxcb.cn/news/detail-799562.html
public:
static MWidget *getInstance();
private:
MWidget(QWidget *parent = nullptr);
~MWidget();
static MWidget *instance;
2.源文件文章來源地址http://www.zghlxwxcb.cn/news/detail-799562.html
MWidget *MWidget::instance = nullptr;
MWidget *MWidget::getInstance()
{
if(instance==nullptr)
instance = new MWidget;
return instance;
}
到了這里,關(guān)于QT網(wǎng)絡(luò)通信-TCP、UDP通信的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!