Qt UDP通信學習

Qt UDP通信學習

一、項目概述

本項目基于Qt框架實現了UDP通信功能,支持單播與廣播消息收發,展示了UDP套接字的基本用法,適合初學者學習Qt網絡模塊的實際應用。

二、項目結構

  • 55.pro:Qt工程文件,配置模塊與源碼文件
  • main.cpp:程序入口,初始化應用與主窗口
  • widget.h / widget.cpp:主窗口類,包含UI與核心邏輯
  • widget.ui:界面文件(未展示,需在Qt Designer中查看)

三、環境配置

  • Qt 5.x及以上
  • 啟用network、widgets模塊
  • C++11支持

四、核心代碼詳解

1. main.cpp

#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

2. widget.h

#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QUdpSocket>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{Q_OBJECT
public:Widget(QWidget *parent = nullptr);~Widget();
private:Ui::Widget *ui;           // UI指針QUdpSocket *udpSocket;    // UDP套接字對象
private slots:void readPendingDatagrams();      // 接收數據槽void on_pushButton_3_clicked();   // 單播發送按鈕槽void on_pushButton_clicked();     // 綁定端口按鈕槽void on_pushButton_2_clicked();   // 解除綁定按鈕槽void on_pushButton_4_clicked();   // 廣播發送按鈕槽void mStateChanged(QAbstractSocket::SocketState); // 狀態變化槽
};
#endif // WIDGET_H

3. widget.cpp

#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);udpSocket = new QUdpSocket(this);ui->pushButton_2->setEnabled(false);connect(udpSocket, SIGNAL(readyRead()), this, SLOT(readPendingDatagrams()));connect(udpSocket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(mStateChanged(QAbstractSocket::SocketState)));
}
Widget::~Widget()
{delete ui;
}
void Widget::readPendingDatagrams()
{QByteArray tmpByteArray;tmpByteArray.resize(udpSocket->pendingDatagramSize());QHostAddress ipaddr;quint16 port;while (udpSocket->hasPendingDatagrams()) {udpSocket->readDatagram(tmpByteArray.data(), tmpByteArray.size(), &ipaddr, &port);ui->textBrowser->append("接收來自:" + ipaddr.toString() + ":" + QString::number(port) + tmpByteArray);}
}
void Widget::on_pushButton_3_clicked()
{ui->textBrowser->append("發送:" + ui->lineEdit->text());udpSocket->writeDatagram(ui->lineEdit->text().toUtf8(), QHostAddress("127.0.0.1"), 7755);
}
void Widget::on_pushButton_clicked()
{ui->pushButton->setEnabled(false);ui->pushButton_2->setEnabled(true);udpSocket->bind(8888);
}
void Widget::on_pushButton_2_clicked()
{udpSocket->abort();ui->pushButton->setEnabled(true);ui->pushButton_2->setEnabled(false);
}
void Widget::on_pushButton_4_clicked()
{ui->textBrowser->append("發送:" + ui->lineEdit->text());udpSocket->writeDatagram(ui->lineEdit->text().toUtf8(), QHostAddress::Broadcast, 7755);
}
void Widget::mStateChanged(QAbstractSocket::SocketState socketState)
{switch (socketState) {case QAbstractSocket::BoundState:ui->textBrowser->append("socket狀態BoundState");default:break;}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/96060.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/96060.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/96060.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

古德哈特定律(Goodhart‘s Law)

古德哈特定律&#xff08;Goodhart’s Law&#xff09;表述為“當一個指標變成了目標&#xff0c;它將不再是個好指標”。 該定律由英國經濟學家查爾斯古德哈特&#xff08;Charles Goodhart&#xff09;在1975年提出&#xff0c;最初用于批判撒切爾夫人政府的貨幣主義政策&…

在 ASP.NET Core 8 Web API 中實現基于角色的授權 安全且可擴展 API 的最佳實踐

掌握基于角色的授權&#xff1a;使用專家策略保護您的 ASP.NET Core 8 Web API。在 ASP.NET Core 8 Web API 中實現基于角色的授權&#xff1a;安全且可擴展 API 的最佳實踐介紹授權是任何 Web 應用程序的關鍵組件。在開發 API 時&#xff0c;使用基于角色的授權保護端點可確保…

AutoHotkey識別圖片

一、下載ImagePut插件 下載地址&#xff1a;GitHub - iseahound/ImagePut: A core library for images in AutoHotkey. Supports AutoHotkey v1 and v2. 二、將插件和要搜索的圖片導入項目 #Include ./plugin/ImagePut.ahk ; 截取當前屏幕 pic : ImagePutBuffer(0) point : p…

CamX-Camera常用編譯命令和adb指南

g_camxsettings vendor/qcom/proprietary/camx/src/settings/g_camxsettings.xml 控制相機debug的信息都在該文件里面 0、相關代碼 framwork層 frameworks/av/camera/ frameworks/av/services/camera frameworks/av/services/camera frameworks/hardware/interfaces/camerase…

LabVIEW 實現顏色平滑漸變控制

LabVIEW 中實現 LED 顏色從藍到紅的平滑漸變顯示在 LabVIEW 開發中&#xff0c;若需讓 LED&#xff08;或類 LED 顯示控件&#xff09;實現從藍色到紅色的平滑色彩漸變&#xff08;模擬溫度等參數從低到高的視覺反饋&#xff09;&#xff0c;可通過自定義顏色查找表 數值縮放映…

陰陽學:從入門到精通

第一篇&#xff1a;入門篇——陰陽基礎理論1.1 陰陽的起源與哲學意義陰陽概念的歷史淵源《易經》中的陰陽思想陰陽與宇宙、自然、人生的關系陰陽對思想、行為、社會的影響1.2 陰陽的基本屬性與符號陰陽的特征、象征與對立統一陰陽在自然界的表現&#xff08;晝夜、冷熱、動靜等…

Java工業通信實戰(三):Modbus RTU串口通信實現

想象一下&#xff0c;你要和一臺工業設備"對話"&#xff0c;比如詢問溫度傳感器"現在多少度&#xff1f;“或者告訴電機"轉快一點”。 Modbus RTU就是這種"對話"的標準語言&#xff0c;就像人與人之間說普通話一樣。 它采用主從結構&#xff0c;…

CentOS安裝或升級protoc

卸載舊版本 sudo yum remove protobuf protobuf-c protobuf-compiler -y sudo rm -f /usr/bin/protoc sudo rm -rf /usr/include/google/protobuf 下載 wget https://github.com/protocolbuffers/protobuf/releases/download/v3.15.0/protoc-3.15.0-linux-x86_64.zip unz…

人工智能在醫學圖像中的應用:從機器學習到深度學習

目的&#xff1a;人工智能&#xff08;AI&#xff09;模型在生物醫學研究和醫療服務中扮演著越來越重要的角色。本綜述聚焦于在現實世界背景下&#xff0c;開發AI應用作為臨床決策支持系統時需要澄清的挑戰性問題。方法&#xff1a;進行了一項敘述性綜述&#xff0c;包含對1989…

基于Echarts+HTML5可視化數據大屏展示-智慧小區大數據分析

效果展示&#xff1a;代碼結構&#xff1a;主要代碼實現 index.html布局 <!doctype html> <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8"><title>智慧農業大數據展示</title><link rel"s…

【LeetCode熱題100道筆記】驗證二叉搜索樹

題目描述 給你一個二叉樹的根節點 root &#xff0c;判斷其是否是一個有效的二叉搜索樹。 有效 二叉搜索樹定義如下&#xff1a; 節點的左子樹只包含 嚴格小于 當前節點的數。 節點的右子樹只包含 嚴格大于 當前節點的數。 所有左子樹和右子樹自身必須也是二叉搜索樹。 示例 1&…

Apache Tomcat 教程:從入門到精通(含目錄結構與版本詳解)

??????1. 背景?? Apache Tomcat 是一個開源的 ??Java Servlet 容器??&#xff0c;由 ??Apache 軟件基金會&#xff08;ASF&#xff09;?? 開發和維護&#xff0c;最初由 ??Sun Microsystems?? 的軟件架構師 ??James Duncan Davidson?? 設計&#xff0…

設計模式從入門到精通之(六)策略模式

策略模式&#xff1a;讓算法靈活切換的秘密武器在日常開發中&#xff0c;算法的選擇常常是程序設計的核心&#xff0c;比如支付方式的選擇、排序邏輯的切換、促銷活動的動態調整等。當需求變化時&#xff0c;我們需要在多個算法之間切換&#xff0c;但又不希望修改已有代碼。如…

安裝MATLAB205軟件記錄

安裝MATLAB2025 一臺電腦可以安裝多個版本的MATLAB; 下載資源 微信公眾平臺-MATLAB R2025a v25.1下載及安裝教程 安裝步驟 解壓, 壓縮文件大小為13.8GB 裝載 選中setup.exe右鍵單擊以管理員身份運行 我有文件安裝密鑰 接受許可條款 復制粘貼密鑰 63733-59078-50866-02827-…

MySQL 基礎架構(一):SQL語句的執行之旅

MySQL系列文章 MySQL 基礎架構&#xff08;一&#xff09;&#xff1a;SQL語句的執行之旅 你是否好奇過&#xff0c;一條看似簡單的SQL查詢語句&#xff0c;在MySQL內部究竟經歷了怎樣的"奇幻之旅"&#xff1f;從連接建立到結果返回&#xff0c;MySQL是如何層層處理、…

Spring Boot 使用 Druid 連接池極致優化

在 Spring Boot 中使用 Druid 連接池進行極致優化&#xff0c;需要從核心參數調優、監控體系搭建、安全增強、連接管理及性能適配等多個維度綜合考慮。以下是分階段的詳細優化策略&#xff1a;一、基礎環境準備確保使用最新穩定版 Druid&#xff08;截至 2024 年推薦 1.2.38&am…

【Big Data】Apache Kafka 分布式流處理平臺的實時處理實踐與洞察

目錄 一、Apache Kafka是什么 二、Kafka的誕生背景 三、Kafka的架構設計 四、Kafka解決的技術問題 五、Kafka的關鍵特性 六、Kafka與其他消息隊列系統的對比 七、Kafka的工作原理 八、Kafka的部署與使用方法 1. 集群部署 2. 生產者與消費者配置 3. 安全配置 4. 監控…

23種設計模式——裝飾器模式(Decorator Pattern)詳解

?作者簡介&#xff1a;大家好&#xff0c;我是 Meteors., 向往著更加簡潔高效的代碼寫法與編程方式&#xff0c;持續分享Java技術內容。 &#x1f34e;個人主頁&#xff1a;Meteors.的博客 &#x1f49e;當前專欄&#xff1a;設計模式 ?特色專欄&#xff1a;知識分享 &#x…

《sklearn機器學習——聚類性能指標》Davies-Bouldin Index (戴維斯-博爾丁指數)

Davies-Bouldin Index (戴維斯-博爾丁指數)簡介 概念與定義 Davies-Bouldin Index是由David L. Davies和Donald W. Bouldin于1979年提出的一種用于評估聚類算法效果的內部指標。它通過計算每個簇內數據點之間的相似性和不同簇中心點的距離來衡量聚類結果的質量。DBI的值越低&am…

QT的學習(一)

前言&#xff1a;距離上一次摸QT已經快10年了&#xff0c;時光匆匆&#xff0c;現在已經到6.9版本了 一、安裝QT 1.1、下載鏈接 https://mirrors.tuna.tsinghua.edu.cn/qt/official_releases/online_installers/ 這是國內鏡像&#xff0c;比官網快很多了&#xff0c;官網那個…