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...