亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Qt開源作品41-網(wǎng)絡(luò)調(diào)試助手增強(qiáng)版V2022

pepperwang / 1075人閱讀

摘要:可暫停顯示收發(fā)數(shù)據(jù)。定時(shí)器自動(dòng)發(fā)送。同時(shí)支持嵌入式樹莓派等。三效果圖四開源主頁以上作品完整源碼下載都在開源主頁,會(huì)持續(xù)不斷更新作品數(shù)量和質(zhì)量,歡迎各位關(guān)注。本開源項(xiàng)目已經(jīng)成功升級到版本,分門別類,圖文并茂,保你爽到爆。

一、前言

做網(wǎng)絡(luò)通信少不了網(wǎng)絡(luò)收發(fā)數(shù)據(jù),經(jīng)常用到網(wǎng)絡(luò)數(shù)據(jù)的調(diào)試相關(guān)工具,以便偵聽數(shù)據(jù)用來判斷數(shù)據(jù)是否正確,許久以前就發(fā)布過類似的工具,第一版大概在2013年,第二版大概在2017年,中間參考過不少的網(wǎng)絡(luò)調(diào)試助手,也有些叫網(wǎng)絡(luò)調(diào)試工具等等,個(gè)人覺得做得最好的還是野人家園的NetAssist,小巧綠色,功能強(qiáng)大。

中間不少網(wǎng)友提過很多建議,比如為何沒有Udp客戶端只有Udp服務(wù)器,其實(shí)Udp通信是無連接的,意味著QUdpSocket即是客戶端也是服務(wù)器,但是根據(jù)眾多用戶的操作習(xí)慣以及編程對稱性法則,還是多帶帶又做了個(gè)Udp客戶端。如今WebSocket也非常流行,客戶端工具和網(wǎng)頁之間通信可以直接用上socket之類的機(jī)制,而且自從Qt5以后有了WebSocket模塊,使用非常簡單,封裝的QWebSocket、QWebSocketServer(很奇怪這里沒有叫QWebServer?)和QTcpSocket、QTcpServer、QUdpSocket用法幾乎一致。

二、主要功能

  1. Tcp客戶端模塊。
  2. Tcp服務(wù)器模塊。
  3. Udp客戶端模塊。
  4. Udp服務(wù)器模塊。
  5. WebSocket客戶端模塊。
  6. WebSocket服務(wù)器模塊。
  7. 服務(wù)器支持多個(gè)客戶端連接。
  8. Ascii字符數(shù)據(jù)收發(fā)。
  9. Hex16進(jìn)制數(shù)據(jù)收發(fā)。
  10. 支持Utf8中文數(shù)據(jù)收發(fā)。
  11. 可指定網(wǎng)卡IP地址綁定。
  12. 可暫停顯示收發(fā)數(shù)據(jù)。
  13. 定時(shí)器自動(dòng)發(fā)送。
  14. 可對單個(gè)在線連接發(fā)送數(shù)據(jù),也可勾選全部連接進(jìn)行發(fā)送。
  15. 可配置常用發(fā)送數(shù)據(jù)(send.txt),自動(dòng)從配置文件加載數(shù)據(jù)發(fā)送下拉框的數(shù)據(jù)。
  16. 可啟用設(shè)備模擬回復(fù)(device.txt),當(dāng)收到某個(gè)數(shù)據(jù)時(shí),模擬設(shè)備自動(dòng)應(yīng)答回復(fù)數(shù)據(jù)。
  17. 自動(dòng)從配置文件加載最后的界面設(shè)置。
  18. 同時(shí)支持Qt4、Qt5、Qt6。
  19. 同時(shí)支持win、linux、mac、嵌入式linux、樹莓派等。
  20. 每個(gè)模塊功能都是獨(dú)立的一個(gè)Form,可以很方便的直接new,這樣需要多少個(gè)就new多少個(gè),用戶可以任意指定動(dòng)態(tài)新建多個(gè)客戶端和服務(wù)器。

三、效果圖

四、開源主頁

  • 以上作品完整源碼下載都在開源主頁,會(huì)持續(xù)不斷更新作品數(shù)量和質(zhì)量,歡迎各位關(guān)注。
  • 本開源項(xiàng)目已經(jīng)成功升級到V2.0版本,分門別類,圖文并茂,保你爽到爆。
  • Qt開源武林秘籍開發(fā)經(jīng)驗(yàn),看完學(xué)完,20K起薪,沒有找我!
  1. 國內(nèi)站點(diǎn):https://gitee.com/feiyangqingyun/QWidgetDemo
  2. 國際站點(diǎn):https://github.com/feiyangqingyun/QWidgetDemo
  3. 開源秘籍:https://gitee.com/feiyangqingyun/qtkaifajingyan
  4. 個(gè)人主頁:https://qtchina.blog.csdn.net/
  5. 知乎主頁:https://www.zhihu.com/people/feiyangqingyun/

五、核心代碼

//第一步:實(shí)例化對應(yīng)的類tcpSocket = new QTcpSocket(this);connect(tcpSocket, SIGNAL(connected()), this, SLOT(connected()));connect(tcpSocket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(disconnected()));connect(tcpSocket, SIGNAL(disconnected()), this, SLOT(disconnected()));connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(readData()));tcpServer = new TcpServer(this);connect(tcpServer, SIGNAL(clientConnected(QString, int)), this, SLOT(clientConnected(QString, int)));connect(tcpServer, SIGNAL(clientDisconnected(QString, int)), this, SLOT(clientDisconnected(QString, int)));connect(tcpServer, SIGNAL(sendData(QString, int, QString)), this, SLOT(sendData(QString, int, QString)));connect(tcpServer, SIGNAL(receiveData(QString, int, QString)), this, SLOT(receiveData(QString, int, QString)));udpSocket = new QUdpSocket(this);connect(udpSocket, SIGNAL(readyRead()), this, SLOT(readData()));//第二步:收發(fā)數(shù)據(jù)void frmTcpClient::readData(){    QByteArray data = tcpSocket->readAll();    if (data.length() <= 0) {        return;    }    QString buffer;    if (App::HexReceiveTcpClient) {        buffer = QUIHelper::byteArrayToHexStr(data);    } else if (App::AsciiTcpClient) {        buffer = QUIHelper::byteArrayToAsciiStr(data);    } else {        buffer = QString(data);    }    append(1, buffer);    //自動(dòng)回復(fù)數(shù)據(jù),可以回復(fù)的數(shù)據(jù)是以;隔開,每行可以帶多個(gè);所以這里不需要繼續(xù)判斷    if (App::DebugTcpClient) {        int count = App::Keys.count();        for (int i = 0; i < count; i++) {            if (App::Keys.at(i) == buffer) {                sendData(App::Values.at(i));                break;            }        }    }}void frmUdpClient::readData(){    QHostAddress host;    quint16 port;    QByteArray data;    QString buffer;    while (udpSocket->hasPendingDatagrams()) {        data.resize(udpSocket->pendingDatagramSize());        udpSocket->readDatagram(data.data(), data.size(), &host, &port);        if (App::HexReceiveUdpClient) {            buffer = QUIHelper::byteArrayToHexStr(data);        } else if (App::AsciiUdpClient) {            buffer = QUIHelper::byteArrayToAsciiStr(data);        } else {            buffer = QString(data);        }        QString ip = host.toString();        ip = ip.replace("::ffff:", "");        if (ip.isEmpty()) {            continue;        }        QString str = QString("[%1:%2] %3").arg(ip).arg(port).arg(buffer);        append(1, str);        if (App::DebugUdpClient) {            int count = App::Keys.count();            for (int i = 0; i < count; i++) {                if (App::Keys.at(i) == buffer) {                    sendData(ip, port, App::Values.at(i));                    break;                }            }        }    }}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/125024.html

相關(guān)文章

  • 了解RoboMaster視覺組(三)視覺組使用的軟件

    摘要:視覺組接觸的軟件進(jìn)行視覺開發(fā)會(huì)用到各種各樣的軟件開發(fā)環(huán)境輔助工具等,所以很有必要了解一些相關(guān)的快捷鍵命令使用技巧。沒有這樣保姆級的,并不存在一款能夠自動(dòng)為你生成的軟件。一款錄制屏幕的軟件。 --NeoZng【neozng1@hnu.edu.cn】 3.視覺組接觸的軟件 進(jìn)行視覺開發(fā)會(huì)用到...

    AlphaWallet 評論0 收藏0
  • 超好用的谷歌瀏覽器、Sublime Text、Phpstorm、油猴插件合集

    摘要:分享一些超好用插件,打造一個(gè)不一樣的瀏覽器編輯器。一谷歌瀏覽器插件谷歌訪問助手強(qiáng)烈推薦一鍵安裝,無需其他配置,即可訪問谷歌。谷歌瀏覽器是很耗內(nèi)存的,該插件會(huì)自動(dòng)掛起長時(shí)間未使用的網(wǎng)頁,來釋放系統(tǒng)資源。 showImg(https://segmentfault.com/img/remote/1460000014011338); 分享一些超好用插件,打造一個(gè)不一樣的 GitHub、瀏覽器、...

    Rango 評論0 收藏0
  • 系統(tǒng)地學(xué)習(xí)C++

    摘要:本書主要圍繞一系列逐漸復(fù)雜的程序問題,以及用以解決這些問題的語言特性展開講解。你不只學(xué)到的函數(shù)和結(jié)構(gòu),也會(huì)學(xué)習(xí)到它們的設(shè)計(jì)目的和基本原理。因此我們把精力集中在最有價(jià)值的地方。本書不僅是對模板的權(quán)威解釋,而且本書還深入地介紹了其他一般的思想。 C++ 入門教程(41課時(shí)) - 阿里云大學(xué) C+...

    joyqi 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<