最近QT中使用UDP遇到的問題及解決方案

2021-10-07 23:56:40 字數 834 閱讀 1835

.qt中使用windows封裝的winsocket,需要修改d:\qt\qt5.14.1\5.14.1\msvc2015_64\include\qtcore路徑下的qt_windows.**件,在#include 前增加#define win32_lean_and_mean。

.udp的繫結,bind函式,qt中使用windows封裝的winsocket時,如果同時使用了c++的using namespace std,則呼叫的bind函式是std命名空間下的,解決方法是不使用using namespace std,而是在需要的地方使用std::。

.udp的埠指定,原來不知道在哪兒找到的**,指定的埠後面竟然是用htons包起來的,但這段**既有傳送端又有接收端,因此除錯成功了,當初用的時候沒注意htons的功能,導致後來當有一端去掉htons後不能通訊了。

.udp可以不連線,在傳送時指定目的地。

.udp的包只能乙個乙個接收。如果傳送速度過快,而接收函式在乙個定時器中,每隔一段時間呼叫一次,則會導致接收的資料滯後,並且大量資料被丟棄。解決方法是接收放到執行緒的while迴圈中,一直檢查快取區是否有資料。另外乙個方法是傳送端盡量將多幀資料一起傳送作為一包。

.同乙個埠可以被tcp和udp同時繫結。

.qt中串列埠和udp庫效率問題,經過實際測試,效率不如windows的封裝。因此如果追求高效率,則在qt中使用windows封裝的串列埠和socket,如果追求跨平台,則使用qt的串列埠庫和udp庫。

Qt中使用Xerces C 遇到的問題紀要

其實qt本身對xml的操縱api還是比較豐富的,可是我要使用到xsd的一些很複雜的功能,研究了半天,沒有找到對應的api。於是找到了xerces c 提供的api還是挺豐富的,當然也比較複雜了。寫完後,一編譯,出現了許多unsolved link的錯誤,但是我已經lib的相關設定都設定好了!從傍晚到...

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

udp user datagram protocol,使用者資料報協議 是輕量的 不可靠的 面向資料報 datagram 無連線的協議,可以用於對可靠性要求不高的場所。在使用qt開發上位機或者應用程式中,需要使用到udp通訊,需要預先建立持久的socket鏈結,udp每次傳送資料報都需要指定目標ip...

最近遇到的問題

1.windows下使用anaconda安裝python包報錯 unicodedecodeerror ascii codec can t decode byte 0xcb in position 9 報錯unicodedecodeerror ascii codec can t decode byte...