Qt中使用QUdpSocket實現UDP通訊方法

2021-09-11 02:24:59 字數 1392 閱讀 6350

udp(user datagram protocol,使用者資料報協議)是輕量的、不可靠的、面向資料報(datagram)、無連線的協議,可以用於對可靠性要求不高的場所。

在使用qt開發上位機或者應用程式中,需要使用到udp通訊,需要預先建立持久的socket鏈結,udp每次傳送資料報都需要指定目標ip位址和埠。

函式功能

boolbind(quint16 port)

為udp通訊繫結乙個埠

boolabort( )

釋放為udp繫結的埠

qint64writedatagram(qbytearray &datagram, qhostaddress &host, quint16 port)

資料報傳送,形參分別為資料報,目的ip位址,目的埠號

boolhaspendingdatagram()

接收到資料報時,返回值為true

qint64pendingdatagramsize()

返回待讀取資料報的大小

qint64readdatagram(char *data, qint64 maxsize)

讀取資料報,返回讀取資料報的位元組數,maxsize為設定的讀取位元組數,還可以加上源ip和源埠號

qudpsocket  *udpsocket;

//埠繫結與解綁操作

quint16 port=8080;

udpsocket->bind(port);//繫結到port埠

udpsocket->abort();//用於解綁埠

//傳送資料報操作

qbytearray datagram;

qhostaddress remoteip(「192.168.0.1」);//新增遠端ip

quint16 remoteport(port);//新增遠端埠號

udpsocket->writedatagram(datagram,remoteip,remoteport);

//訊號槽設定

connect(udpsocket,signal(readyread()),this,slot(udpreceive()));//新增訊號與槽的連線,當主機埠接收到資料時readyread()有效,進而觸發跳轉到udpreceive()函式;其中readyread()為qt中qiodevice類中函式,udpreceive()是需要自己編寫的函式。

//位元組讀取

while(udpsocket->haspendingdatagrams())

《qt 5.9 c++開發指南》王維波著,p400

Qt中使用 的方式

先看乙個普通的 類的定義 include using std string class myclass 上述類的定義體現了qt的一些風格 l類名的第乙個字母為大寫,類名包含的單詞使用 駝峰 風格分開,也即每個單詞的第乙個字母為大寫。這是qt類命名的通用方式。l所在方法名的第乙個字母為小寫。單詞之間也...

在Qt中使用sleep

在qt中使用sleep 關於sleep函式,我們先來看一下他的作用 sleep函式是使呼叫sleep函式的執行緒休眠,執行緒主動放棄時間片。當經過指定的時間間隔後,再啟動執行緒,繼續執行 sleep函式並不能起到定時的作用,主要作用是延時。在一些多執行緒中可能會看到sleep 0 其主要目的是讓出時...

QT中使用cin,cout,cerr等

在qt中,用的最多的是gui頁面,但gui比較慢,有些小的試驗不妨先用console,當然在qt裡面可以直接使用cout,cin這些。不過可能不會相容qt自帶的一些型別,比如qbytearray等型別。在網上找了一下,發現可以用如下的方法來進行輸出。首先需要包含下列標頭檔案 include incl...