国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

迅為4412開發板Qt網絡編程-UDP實現服務器和客戶端

發布時間:2021-5-13 09:39    發布者:落風
UDP 協議是開放式,無連接,不可靠的傳輸層通信協議,但它收發數據的速度相對于 TCP 快很多,常用在傳輸音視頻等數據量非常大的場合。
udp 網絡編程只需要使用一個類 QUdpSocket。

本實驗中對 QUdpSocket 的基本使用:
1.創建 QUdpSocket 對象。
2.綁定端口號
3.數據到來觸發 readyRead()信號。
4.讀取發送數據。
5.關閉。
具體步驟:
步驟一:組裝 ui 界面,和 TCP 章節搭建 UI 界面方法一致。

步驟二:編寫代碼
1.創建 QUdpSocket 對象,使用 bind 函數綁定端口號和套接字,數據報到來后會發出信 號
(),在綁定的槽函數內去讀取數據。
2.讀取數據,數據到來 hasPendingDatagrams()返回 true,再用 pendingDatagramSize()獲取數據報的長度,如果數據沒有被讀取
完,hasPendingDatagrams()就會返回 true,直至數據都被讀取完。
readDatagram(data,size);
參數 data 為讀取的數據,size 為數據長度。
3.發送數據,使用 writeDatagram 函數,
writeDatagram(const char *data, qint64 len, const QHostAddress &host, quint16 port);
Data:發送的數據。
Len:發送的數據長度。
Host:目標 IP 地址。
Port:目標端口號。
4.關閉 socket 套接字。
代碼如下:
  1. udp.h
  2. #include
  3. #include
  4. namespace Ui {
  5. class Udp;
  6. }
  7. class Udp : public QMainWindow
  8. {
  9. Q_OBJECT
  10. public:
  11. explicit Udp(QWidget *parent = 0); ~Udp();
  12. QUdpSocket * udpSocket;
  13. private slots:
  14. void on_pushButton_clicked();
  15. void readyRead_Slot(void);
  16. void on_pushButton_3_clicked();
  17. void on_pushButton_2_clicked();
  18. private:
  19. Ui::Udp *ui;
  20. };
  21. udp.cpp:
  22. Udp::Udp(QWidget *parent) :
  23. QMainWindow(parent), ui(new Ui::Udp)
  24. {
  25. ui->setupUi(this);
  26. udpSocket = new QUdpSocket(this);
  27. }
  28. Udp::~Udp()
  29. {
  30. delete ui;
  31. }
  32. /*
  33. * 打開按鈕
  34. */
  35. void Udp::on_pushButton_clicked()
  36. {
  37. //綁定本端口的端口號
  38. if(udpSocket->bind(ui->cliEdit->text().toUInt()) == true){
  39. QMessageBox::information(this,"提示","成功");
  40. }else{
  41. QMessageBox::information(this,"提示","失敗");
  42. }
  43. //綁定數據信號和槽函數
  44. connect(udpSocket,SIGNAL(readyRead()),this,SLOT(readyRead_Slot()));
  45. }
  46. /*
  47. *讀取數據槽函數
  48. */
  49. void Udp::readyRead_Slot()
  50. {
  51. QString buf;
  52. QByteArray array;
  53. //hasPendingDatagrams()返回 true 時表示至少有一個數據報在等待被讀取
  54. while(udpSocket->hasPendingDatagrams()){
  55. //獲取數據
  56. array.resize(udpSocket->pendingDatagramSize());
  57. udpSocket->readDatagram(array.data(),array.size());
  58. buf = array.data();
  59. ui->recvEdit->appendPlainText(buf);
  60. }
  61. }
  62. /*
  63. * 發送數據
  64. */
  65. void Udp::on_pushButton_3_clicked()
  66. {
  67. quint16 port;
  68. QString sendBuff;
  69. QHostAddress address;
  70. address.setAddress(ui->ipEdit->text());//目標機地址
  71. port = ui->portEdit->text().toInt();//目標機端口號
  72. sendBuff = ui->sendEdit->text();//發送的數據
  73. //發送
  74. udpSocket->writeDatagram(sendBuff.toLocal8Bit().data(),sendBuff.length(),address,port);
  75. }
  76. /*
  77. *關閉
  78. */
  79. void Udp::on_pushButton_2_clicked()
  80. {
  81. udpSocket->close();
  82. }
復制代碼

步驟三:運行測試,收發功能正常如圖:


本文地址:http://m.qingdxww.cn/thread-766692-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 利用SAM E54 Xplained Pro評估工具包演示CAN轉USB橋接器以及基于CAN的主機和自舉程序應用程序
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 貿澤電子(Mouser)專區
關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: a黄色毛片| 亚洲欧美另类视频 | 91不卡| 久久伊人精品青青草原高清 | 亚洲第一网址 | 欧美一区二区三区免费播放 | 99热免费精品| 青青草原伊人 | 亚洲欧美小视频 | a亚洲欧美中文日韩在线v日本 | 日韩欧美在线观看一区 | www.av视频在线观看 | 亚洲激情小视频 | 自拍偷拍首页 | 国产成人亚洲综合欧美一部 | 日本韩国在线观看 | 亚洲自拍偷拍图 | 日本不卡高清视频 | 99久久精品国产免费 | 亚洲欧美另类在线观看 | 在线免费观看色视频 | 九九视频网 | 综合免费一区二区三区 | 片成年免费观看网站黄 | 国产欧美曰韩一区二区三区 | 91av麻豆| 欧美一级成人 | 中文字幕亚洲国产 | 91精品国产麻豆国产自产在线 | 国产精品国产欧美综合一区 | 大陆一级毛片国语对白 | 国产精品v片在线观看不卡 国产精品v欧美精品v日韩精品 | 国产在线视频91 | 啦啦啦在线观看视频免费观看4 | 午夜精品在线免费观看 | 日韩大片在线 | 国产成人经典三级在线观看 | 91国内揄拍国内精品对白 | 国产做a爰片久久毛片a | 激情综合六月 | 亚洲六月丁香六月婷婷花 |