国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Qt進(jìn)行UDP通訊,創(chuàng)建一個(gè)收線程這樣可以進(jìn)行接收數(shù)據(jù)

這篇具有很好參考價(jià)值的文章主要介紹了Qt進(jìn)行UDP通訊,創(chuàng)建一個(gè)收線程這樣可以進(jìn)行接收數(shù)據(jù)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

實(shí)現(xiàn)效果

qt利用線程實(shí)現(xiàn)udp,Qt,qt,udp

實(shí)現(xiàn)過(guò)程

準(zhǔn)備工作

在.pro中增加一句話

QT       +=network

繪制界面
qt利用線程實(shí)現(xiàn)udp,Qt,qt,udp
.h文件內(nèi)容:

#ifndef WIDGET_H
#define WIDGET_H

#include "receivethread.h"
#include "sendthread.h"
#include <QWidget>
#include <QUdpSocket>
#include <iostream>
#include <stdint.h>
#include <sstream>
using namespace std;

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = nullptr);
    ~Widget();

public slots:
    //接收信號(hào)
    void receiveSlot();
    //停止線程
    void quitThreaSlot();

private slots:
    void on_pushButton_clicked();

    void on_pushButton_5_clicked();

    void on_pushButton_4_clicked();

private:
    Ui::Widget *ui;
    receiveThread*preceiveTHread;



private:
    QUdpSocket *m_udpSocket = nullptr;


};

#endif // WIDGET_H

構(gòu)造函數(shù)內(nèi)容

ui->setupUi(this);

    preceiveTHread = new receiveThread(this);

    //本地主機(jī)名
       QString hostName = QHostInfo::localHostName();

       //本機(jī)IP地址
       QHostInfo hostInfo = QHostInfo::fromName(hostName);

       //IP地址列表
       QList<QHostAddress> addrList = hostInfo.addresses();
       for(int i=0;i<addrList.count();i++)
       {
           QHostAddress host = addrList.at(i);

           if(QAbstractSocket::IPv4Protocol == host.protocol())
           {
               QString ip = host.toString();
               ui->comboBox->addItem(ip);
           }
       }

    m_udpSocket = new QUdpSocket(this);
    //連接信號(hào)和槽(綁定端口就開始接收信號(hào)線程,接收到數(shù)據(jù)就顯示,關(guān)閉窗口關(guān)閉線程)

    connect(this,SIGNAL(destroyed()),this,SLOT(quitThreaSlot()));
    connect(preceiveTHread,SIGNAL(receiveSignal()),this,SLOT(receiveSlot()));

對(duì)于綁定按鈕的定義函數(shù):

void Widget::on_pushButton_clicked()
{
    //本機(jī)UDP端口
    qint16 port = ui->spinBox->value();

    if(m_udpSocket->bind(port))
    {
        ui->plainTextEdit->appendPlainText("**已成功綁定");
        ui->plainTextEdit->appendPlainText("**綁定端口: "+QString::number(m_udpSocket->localPort()));
        ui->pushButton->setEnabled(false);
    }
    else
    {
         ui->plainTextEdit->appendPlainText("**綁定失敗");
    }
    //啟動(dòng)線程

    preceiveTHread->start();
}

接收信號(hào)的槽函數(shù)(UDP接收到數(shù)據(jù)顯示)

void Widget::receiveSlot()
{
    ui->lineEdit->clear();
    //是否還有待讀取的傳入數(shù)據(jù)報(bào)
    while(m_udpSocket->hasPendingDatagrams())
    {
        QByteArray data;

        //返回待讀取的數(shù)據(jù)報(bào)的字節(jié)數(shù)
        data.resize(m_udpSocket->pendingDatagramSize());

        QHostAddress peerAddr;

        quint16 peerPort;

        //讀取數(shù)據(jù)報(bào)的內(nèi)容
        m_udpSocket->readDatagram(data.data(),data.size(),&peerAddr,&peerPort);



        QString str = data.data();

        QString peer = "[From ] +"+peerAddr.toString()+":"+QString::number(peerPort)+"] ";

        ui->lineEdit->setText(peer+str);

    }
}

quitThreaSlot函數(shù):

void Widget::quitThreaSlot()
{
    preceiveTHread->quit();
    preceiveTHread->wait();
}

退出按鈕定義:

void Widget::on_pushButton_4_clicked()
{
    preceiveTHread->terminate();
}

使用的receivethread.h就是將run函數(shù)重寫(循環(huán)發(fā)送定義的信號(hào)延遲即可),在定義一個(gè)信號(hào)即可。
以上即功能的所有有錯(cuò)還請(qǐng)指出文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-831272.html

到了這里,關(guān)于Qt進(jìn)行UDP通訊,創(chuàng)建一個(gè)收線程這樣可以進(jìn)行接收數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • android手機(jī)版tcp或者udp通訊測(cè)試工具,可以用于工業(yè)設(shè)備或者系統(tǒng)開發(fā)時(shí)間測(cè)試tcp或是udp連接通訊是否正常工作

    android手機(jī)版tcp或者udp通訊測(cè)試工具,可以用于工業(yè)設(shè)備或者系統(tǒng)開發(fā)時(shí)間測(cè)試tcp或是udp連接通訊是否正常工作

    介紹 由于工作需要一款安卓的tcp udp測(cè)試工具,而市場(chǎng)里沒(méi)有或者不好用,或者都是廣告,現(xiàn)在個(gè)人開發(fā)者又不讓發(fā)布應(yīng)用了,小巧好用不收集用戶信息的不收費(fèi)沒(méi)有廣告的小工具只能自己用,哈哈。 這里分享給大家一款,tcp或者udp通訊測(cè)試工具(android),用于工業(yè)設(shè)備或者系

    2024年02月11日
    瀏覽(32)
  • Qt網(wǎng)絡(luò)編程 (udp廣播和接收例)

    Qt網(wǎng)絡(luò)編程 (udp廣播和接收例)

    使用兩個(gè)項(xiàng)目 1 sender 用來(lái)廣播\\\"hello world\\\"; 2 receiver 用來(lái)接收廣播信息 1 創(chuàng)建Qdialog類 2 在sender.pro 中添加 QT +=network 一行代碼 3 在sender.h 中聲明類 class QUdpSocket; 在聲明一個(gè)私有對(duì)象 QUdpSocket *sender; 4 在ui界面拖入一個(gè)按鈕 用來(lái)觸發(fā)廣播信息 其槽函數(shù)如下 在sender.cpp 構(gòu)造函數(shù)中添

    2024年02月11日
    瀏覽(19)
  • 如何在前端實(shí)現(xiàn)WebSocket發(fā)送和接收UDP消息(多線程模式)

    如何在前端實(shí)現(xiàn)WebSocket發(fā)送和接收UDP消息(多線程模式)

    本文將繼續(xù)介紹如何在前端應(yīng)用中利用WebSocket技術(shù)發(fā)送和接收UDP消息,并引入多線程模式來(lái)提高發(fā)送效率和性能。我們將使用JavaScript語(yǔ)言來(lái)編寫代碼,并結(jié)合WebSocket API、UDP數(shù)據(jù)包、Web Workers和UDP消息監(jiān)聽器來(lái)實(shí)現(xiàn)這一功能。 首先,我們需要在前端應(yīng)用中建立一個(gè)WebSocket連接

    2024年02月12日
    瀏覽(17)
  • 使用Java服務(wù)器實(shí)現(xiàn)UDP消息的發(fā)送和接收(多線程)

    使用Java服務(wù)器實(shí)現(xiàn)UDP消息的發(fā)送和接收(多線程)

    在本篇博客中,我們將介紹如何使用Java服務(wù)器來(lái)實(shí)現(xiàn)UDP消息的發(fā)送和接收,并通過(guò)多線程的方式來(lái)處理并發(fā)請(qǐng)求。UDP(User Datagram Protocol)是一種無(wú)連接、不可靠的傳輸協(xié)議,適合于實(shí)時(shí)性要求高的應(yīng)用場(chǎng)景,如實(shí)時(shí)游戲、語(yǔ)音通信等。 步驟: 首先,我們需要導(dǎo)入Java提供的

    2024年02月12日
    瀏覽(36)
  • Qt實(shí)現(xiàn)UDP高速通訊,下位機(jī)為FPGA

    目錄 一、為什么要寫這篇文章,因?yàn)槲揖褪且肀脔鑿剑?dāng)然也是汲取了網(wǎng)上大咖們的經(jīng)驗(yàn),盡量簡(jiǎn)潔的進(jìn)行總結(jié) 二、關(guān)于接收數(shù)據(jù)需的條件,需要綁定本地IP地址和端口號(hào),可解釋為此時(shí)為服務(wù)器模式,遠(yuǎn)端為客戶端模式,實(shí)現(xiàn)的代碼非常簡(jiǎn)單幾行代碼可以搞定 三、數(shù)據(jù)

    2024年02月12日
    瀏覽(22)
  • QT網(wǎng)絡(luò)編程之實(shí)現(xiàn)UDP廣播發(fā)送和接收

    一.UDP廣播介紹 UDP廣播地址固定IP地址為:XXX.XXX.XXX.255。 如果向全網(wǎng)段發(fā)送廣播消息,那么廣播地址為:255.255.255.255; 如果向單個(gè)網(wǎng)段發(fā)送廣播消息,例如你的IP是192.168.31.104,那么廣播地址為192.168.31.255。 廣播消息接收方需要綁定0.0.0.0地址并監(jiān)聽指定端口即可收到廣播的群

    2024年03月25日
    瀏覽(50)
  • [Qt網(wǎng)絡(luò)編程]之UDP通訊的簡(jiǎn)單編程實(shí)現(xiàn)

    [Qt網(wǎng)絡(luò)編程]之UDP通訊的簡(jiǎn)單編程實(shí)現(xiàn)

    hello!歡迎大家來(lái)到我的Qt學(xué)習(xí)系列之 網(wǎng)絡(luò)編程之UDP通訊的簡(jiǎn)單編程實(shí)現(xiàn)。 希望這篇文章能對(duì)你有所幫助?。?! 本篇文章的相關(guān)知識(shí)請(qǐng)看我的上篇文章: 目錄 UDP通訊 ?基于主窗口的實(shí)現(xiàn) ?基于線程的實(shí)現(xiàn) ???????? UDP數(shù)據(jù)報(bào)協(xié)議是一個(gè)面向無(wú)連接的傳輸層報(bào)文協(xié)議 ,它簡(jiǎn)

    2024年04月25日
    瀏覽(29)
  • 251_多線程_創(chuàng)建一個(gè)多線程的圖像處理應(yīng)用,其中每個(gè)線程負(fù)責(zé)對(duì)一部分圖像進(jìn)行處理,然后將處理后的結(jié)果合并為最終圖像

    舉一個(gè)更豐富的例子來(lái)說(shuō)明多線程的用法。 我們將創(chuàng)建一個(gè)多線程的圖像處理應(yīng)用,其中每個(gè)線程負(fù)責(zé)對(duì)一部分圖像進(jìn)行處理,然后將處理后的結(jié)果合并為最終圖像。 這個(gè)例子可以更好地展示多線程并發(fā)處理的優(yōu)勢(shì)。 假設(shè)有一個(gè)函數(shù) processImageSection,它會(huì)對(duì)圖像的一個(gè)特定

    2024年02月15日
    瀏覽(15)
  • UDP和TCP可以使用同一個(gè)端口嗎?

    UDP和TCP可以使用同一個(gè)端口嗎?

    之前有讀者在面試的時(shí)候,被問(wèn)到: TCP 和 UDP 可以同時(shí)監(jiān)聽相同的端口嗎? 關(guān)于端口的知識(shí)點(diǎn),還是挺多可以講的,比如還可以牽扯到這幾個(gè)問(wèn)題: 多個(gè) TCP 服務(wù)進(jìn)程可以同時(shí)綁定同一個(gè)端口嗎? 客戶端的端口可以重復(fù)使用嗎? 客戶端 TCP 連接 TIME_WAIT 狀態(tài)過(guò)多,會(huì)導(dǎo)致端

    2023年04月08日
    瀏覽(374)
  • 基于Qt的多線程TCP即時(shí)通訊軟件的設(shè)計(jì)與實(shí)現(xiàn)

    基于Qt的多線程TCP即時(shí)通訊軟件的設(shè)計(jì)與實(shí)現(xiàn)

    本文將從涉及到主要技術(shù)開始,講解使用Qt來(lái)實(shí)現(xiàn)一個(gè)支持多客戶端鏈接的 多線程TCP服務(wù)器 及其 客戶端 的設(shè)計(jì)與實(shí)現(xiàn)的解決方案。 注:本文使用的開發(fā)環(huán)境為Qt5.15.2, 使用MSVC2019_64編譯器, C++11及以上 接下來(lái)我將會(huì)詳細(xì)講解客戶端和服務(wù)端的設(shè)計(jì)與實(shí)現(xiàn)的關(guān)鍵細(xì)節(jié)。完整的源

    2024年01月16日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包