国产毛片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
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕手机在线视频 | 中文字幕在线观看亚洲日韩 | 99热最新网址获取 | 91大神在线观看精品一区 | 亚洲欧洲精品成人久久曰影片 | 亚洲 欧美 国产 中文 | 日本色图在线观看 | 国产精品15p | 四虎在线免费 | 91视频最新| 欧美一级黄色片免费看 | 欧美一级在线视频 | 55夜色66夜色国产亚洲精品区 | 91精品国产免费自在线观看 | 三级成人网 | 欧美日韩国产片 | 中文字幕 国产精品 | 国产一区91| 四虎永久精品免费观看 | 日本免费不卡视频 | 在线观看免费精品国自产 | 青青草原国产在线 | 成人在线不卡 | 精品99在线观看 | 日韩短视频 | 成人午夜性影院视频 | 亚洲 武侠 欧美 自拍 校园 | 天堂视频在线视频观看2018 | 精品日韩在线视频一区二区三区 | 日韩手机在线 | 五月天天爱 | 国内久久精品 | 久草软件 | 999色综合| 日本wwxx | 国产特级全黄一级毛片不卡 | 看黄网站在线播放 | 精品综合久久久久久99 | 中文字幕成人免费视频 | 女性爽爽影院免费观看麻豆 | 国产成人精品免费青青草原app |