最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Qt實(shí)現(xiàn)簡(jiǎn)單UDP通信

 更新時(shí)間:2022年08月18日 15:04:37   作者:喝水怪~  
這篇文章主要為大家詳細(xì)介紹了Qt實(shí)現(xiàn)簡(jiǎn)單UDP通信,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

Qt簡(jiǎn)單實(shí)現(xiàn)UDP通信的具體代碼,供大家參考,具體內(nèi)容如下

標(biāo)簽(空格分隔): udp通信、Qt

一、UDP簡(jiǎn)介

1)UDP(User Datagram Protocol,用戶數(shù)據(jù)報(bào)協(xié)議)

UDP是一個(gè)輕量級(jí)、不可靠、面向數(shù)據(jù)報(bào)的、無(wú)連接的傳輸層協(xié)議,多用于可靠性要求不嚴(yán)格,不是非常重要的傳輸,如直播、視頻會(huì)議等等。

2)Qt中QUdpSocket類繼承自QAbstractSocket,用來(lái)發(fā)送和接收UDP數(shù)據(jù)報(bào),”Socket”即套接字,套接字即IP地址+端口號(hào)。其中IP地址指定了網(wǎng)絡(luò)中的一臺(tái)主機(jī),二端口號(hào)則指定了該主機(jī)上的一個(gè)應(yīng)用程序,端口號(hào)只具有本地意義,使用套接字即可實(shí)現(xiàn)網(wǎng)絡(luò)上的兩個(gè)應(yīng)用程序之間的通信。

3)QUdpSocket支持IPv4廣播,要廣播數(shù)據(jù)報(bào),則只需發(fā)送到一個(gè)特殊的地址QHostAddress::Broadcast(即255.255.255.255),數(shù)據(jù)報(bào)一般建議發(fā)送字節(jié)數(shù)小于512字節(jié)。端口號(hào)選擇1024-65535(1024以下的常用作保留端口號(hào),如FTP常用端口號(hào)21,Telnet常用端口號(hào)23,DNS域名服務(wù)器常用端口53等)。

二、具體Demo

發(fā)送端:

  • 新建Qt Widgets Application,用作udp發(fā)送端,繼承自Qwidget類即可,設(shè)計(jì)ui界面,用于發(fā)送信息,界面如下:

  • 打開(kāi)pro文件,做如下修改,支持網(wǎng)絡(luò)編程,接收端也需做如下修改

  • 添加發(fā)送端udpSocket以及按鈕的點(diǎn)擊信號(hào)
#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 slots:
? ? void on_pushButton_clicked(); ? //按鈕點(diǎn)擊信號(hào)

private:
? ? Ui::Widget *ui;
? ? QUdpSocket* m_sender; ? //udp發(fā)送端
};
#endif // WIDGET_H
  • 點(diǎn)擊信號(hào)對(duì)應(yīng)槽函數(shù)的實(shí)現(xiàn):
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
? ? : QWidget(parent)
? ? , ui(new Ui::Widget)
{
? ? ui->setupUi(this);
? ? m_sender=new QUdpSocket(this);
}

Widget::~Widget()
{
? ? delete ui;
}

void Widget::on_pushButton_clicked()
{
? ? QByteArray dataGram=ui->lineEdit->text().toUtf8();
? ? m_sender->writeDatagram(dataGram.data(),
? ? ? ? ? ? ? ? ? ? ? ? ? ? dataGram.size(),
? ? ? ? ? ? ? ? ? ? ? ? ? ? QHostAddress::Broadcast, ? ?//udp廣播地址
? ? ? ? ? ? ? ? ? ? ? ? ? ? 6666);
}

接受端:

  • 再新建Qt Widgets Application項(xiàng)目,用作udp接收端,繼承自Qwidget類即可,設(shè)計(jì)ui界面,用標(biāo)簽部件來(lái)顯示接收到的信息,界面如下:

  • 跟發(fā)送端一樣,在pro文件中添加支持網(wǎng)絡(luò)編程的模塊 network
  • 添加接收端udpSocket,如下:
#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 slots:
? ? void processData();
private:
? ? Ui::Widget *ui;
? ? QUdpSocket* m_receiver; //udp接受端
};
#endif // WIDGET_H
  • 編輯接收端源文件:
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
? ? : QWidget(parent)
? ? , ui(new Ui::Widget)
{
? ? ui->setupUi(this);
? ? m_receiver=new QUdpSocket(this);
? ? //綁定發(fā)送端,ShareAddress允許多接收端綁定6666端口
? ? m_receiver->bind(6666,QUdpSocket::ShareAddress);
? ? //當(dāng)接收端接收到數(shù)據(jù)時(shí),就會(huì)發(fā)送readRead信號(hào)
? ? connect(m_receiver,&QUdpSocket::readyRead,this,&Widget::processData);
}

Widget::~Widget()
{
? ? delete ui;
}

void Widget::processData()
{
? ? QString strData;
? ? //有未處理的數(shù)據(jù)報(bào)
? ? while(m_receiver->hasPendingDatagrams()){
? ? ? ? QByteArray dataGram;
? ? ? ? //讀取的數(shù)據(jù)報(bào)大小
? ? ? ? dataGram.resize(m_receiver->pendingDatagramSize());
? ? ? ? m_receiver->readDatagram(dataGram.data(),dataGram.size());
? ? ? ? ui->dataLabel->setText(dataGram); ? //將接收到的數(shù)據(jù)顯示到標(biāo)簽上
? ? }

}

三、運(yùn)行效果

  • 運(yùn)行發(fā)送端應(yīng)用程序,再打開(kāi)接收端應(yīng)用程序;
  • 在發(fā)送端編輯框輸入數(shù)據(jù),點(diǎn)擊廣播,觀察接收端的情況,結(jié)果如下:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 一文帶你了解C語(yǔ)言中的0長(zhǎng)度數(shù)組(可變數(shù)組/柔性數(shù)組)

    一文帶你了解C語(yǔ)言中的0長(zhǎng)度數(shù)組(可變數(shù)組/柔性數(shù)組)

    眾所周知,?GNU/GCC?在標(biāo)準(zhǔn)的?C/C++?基礎(chǔ)上做了有實(shí)用性的擴(kuò)展,?零長(zhǎng)度數(shù)組(Arrays?of?Length?Zero)?就是其中一個(gè)知名的擴(kuò)展,本文就來(lái)聊聊零長(zhǎng)度數(shù)組的相關(guān)知識(shí)吧
    2023-03-03
  • php5系列的apache遠(yuǎn)程執(zhí)行漏洞攻擊腳本

    php5系列的apache遠(yuǎn)程執(zhí)行漏洞攻擊腳本

    這篇文章主要介紹了php5系列的apache遠(yuǎn)程執(zhí)行漏洞攻擊腳本,需要的朋友可以參考下
    2014-06-06
  • c語(yǔ)言實(shí)現(xiàn)計(jì)算圓周率的近似值

    c語(yǔ)言實(shí)現(xiàn)計(jì)算圓周率的近似值

    這篇文章主要介紹了c語(yǔ)言實(shí)現(xiàn)計(jì)算圓周率的近似值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Qt實(shí)現(xiàn)獲取文件大小與磁盤(pán)空間大小

    Qt實(shí)現(xiàn)獲取文件大小與磁盤(pán)空間大小

    這篇文章主要為大家詳細(xì)介紹了如何使用Qt實(shí)現(xiàn)獲取文件大小與磁盤(pán)空間大小,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • C++ Effective詳解

    C++ Effective詳解

    下面小編就為大家?guī)?lái)一篇C++ Effective的文章。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2021-08-08
  • C++超詳細(xì)講解引用和指針

    C++超詳細(xì)講解引用和指針

    引用是C++一個(gè)很重要的特性,顧名思義是某一個(gè)變量或?qū)ο蟮膭e名,對(duì)引用的操作與對(duì)其所綁定的變量或?qū)ο蟮牟僮魍耆葍r(jià),這篇文章主要給大家總結(jié)介紹了C++中引用的相關(guān)知識(shí)點(diǎn),需要的朋友可以參考下
    2022-06-06
  • C++淺析構(gòu)造函數(shù)的特性

    C++淺析構(gòu)造函數(shù)的特性

    構(gòu)造函數(shù)主要作用在于創(chuàng)建對(duì)象時(shí)為對(duì)象的成員屬性賦值,構(gòu)造函數(shù)由編譯器自動(dòng)調(diào)用,無(wú)須手動(dòng)調(diào)用;析構(gòu)函數(shù)主要作用在于對(duì)象銷毀前系統(tǒng)自動(dòng)調(diào)用,執(zhí)行一 些清理工作
    2022-07-07
  • C語(yǔ)言實(shí)現(xiàn)24位彩色圖像二值化

    C語(yǔ)言實(shí)現(xiàn)24位彩色圖像二值化

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)24位彩色圖像二值化,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • C++ 中 const和static readonly區(qū)別

    C++ 中 const和static readonly區(qū)別

    這篇文章主要介紹了C++ 中 const和static readonly區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • 異步http listener 完全并發(fā)處理懲罰http懇求的小例子

    異步http listener 完全并發(fā)處理懲罰http懇求的小例子

    異步http listener 完全并發(fā)處理懲罰http懇求的小例子,需要的朋友可以參考一下
    2013-05-05

最新評(píng)論

贞丰县| 景德镇市| 江口县| 巴彦淖尔市| 都兰县| 福清市| 林州市| 宣汉县| 台东县| 易门县| 远安县| 韶山市| 呼伦贝尔市| 桓台县| 库伦旗| 普兰县| 文成县| 久治县| 商河县| 华池县| 石狮市| 花莲县| 玉环县| 和政县| 洮南市| 纳雍县| 长治市| 广宁县| 河北省| 清流县| 双桥区| 广饶县| 汕尾市| 印江| 三原县| 仙游县| 威远县| 上思县| 石城县| 茂名市| 呈贡县|