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

QT使用udp實(shí)現(xiàn)發(fā)送與接收?qǐng)D片

 更新時(shí)間:2023年12月29日 16:23:39   作者:秋刀魚程序編程  
這篇文章主要為大家詳細(xì)介紹了QT如何使用udp協(xié)議實(shí)現(xiàn)發(fā)送與接收?qǐng)D片功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

使用Qt來(lái)通過(guò)UDP協(xié)議發(fā)送和接收?qǐng)D片可以分為幾個(gè)步驟。以下是一個(gè)基本的指南:

發(fā)送圖片

準(zhǔn)備圖片數(shù)據(jù):首先,你需要將圖片轉(zhuǎn)換為可以在網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)格式。通常,這涉及到將圖片轉(zhuǎn)換為字節(jié)數(shù)組。

設(shè)置UDP套接字:在Qt中,你可以使用QUdpSocket類來(lái)創(chuàng)建UDP套接字。你需要指定目標(biāo)地址和端口號(hào)。

發(fā)送數(shù)據(jù):使用writeDatagram方法將圖片數(shù)據(jù)發(fā)送到目標(biāo)地址。

//發(fā)送udp
void MainWindow::sendMess(){
    QByteArray receBuffer;//創(chuàng)建接收字節(jié)流
    QBuffer bufferDevice(&receBuffer);//
    bufferDevice.open(QIODevice::WriteOnly);//打開緩沖區(qū),寫入字節(jié)流
    image.save(&bufferDevice,"png");//圖像保存為指定類別
    QHostAddress address("192.168.1.100");//創(chuàng)建IP地址
    quint16 port =1234;//創(chuàng)建端口號(hào)
    sendUdp->writeDatagram(receBuffer,QHostAddress::Broadcast,port);//將圖片轉(zhuǎn)為字節(jié)流發(fā)送到指定地址、端口
    sendUdp->flush();
    qDebug()<<"發(fā)送字節(jié)流:"<<receBuffer.size();
}
 
//選擇圖像
void MainWindow::on_pBtn_selectImage_clicked()
{
    ui->label->setText("");//清空文本
    //打開文件
    QString fileName=QFileDialog::
                     getOpenFileName(this,"open file",
                     QDir::currentPath(),"Image File(*.jpg *.png)");
    image.load(fileName);//導(dǎo)入圖片
    ui->label->setPixmap(QPixmap::fromImage(image));//將圖像顯示在標(biāo)簽label
    ui->label->resize(image.width(),image.height());//根據(jù)圖像的大小調(diào)整顯示大小
 
}
 
//發(fā)送圖像
void MainWindow::on_pBtn_sendImage_clicked()
{
    sendUdp=new QUdpSocket(this);//創(chuàng)建字節(jié)套
    timerSend=new QTimer(this);
    connect(timerSend,&QTimer::timeout,this,&MainWindow::sendMess);//啟動(dòng)定時(shí)器發(fā)送圖片信息
    timerSend->start(1000);//1s發(fā)一次
}
 
//停止發(fā)送
void MainWindow::on_pushButton_clicked()
{
    timerSend->stop();
    disconnect(timerSend,&QTimer::timeout,this,&MainWindow::sendMess);
    qDebug()<<"停止發(fā)送";
}

接收?qǐng)D片

設(shè)置UDP套接字:同樣,你需要使用QUdpSocket來(lái)創(chuàng)建一個(gè)UDP套接字。

接收數(shù)據(jù):使用readDatagram方法來(lái)接收數(shù)據(jù)。你需要處理接收到的數(shù)據(jù),并將其轉(zhuǎn)換回圖片格式。

//接收udp
void MainWindow::udpRece(){
//    receUdp->waitForReadyRead(100);//等待10ms寫入
    while(receUdp->hasPendingDatagrams()){
        quint64 size=receUdp->pendingDatagramSize();//讀取字節(jié)流大小
        QByteArray receData;//創(chuàng)建接收字節(jié)流
        receData.resize(size);//改變與發(fā)送端的字節(jié)流大小一樣
        receUdp->readDatagram(receData.data(),receData.size());//讀取發(fā)送端的字節(jié)流
        QBuffer receBuffer(&receData);//
        QImageReader reader(&receBuffer,"png");
        QImage receImage=reader.read();
        sence=new QGraphicsScene(ui->graphicsView);
        ui->graphicsView->setScene(sence);
        QGraphicsPixmapItem *pixmapItem=
                new QGraphicsPixmapItem(QPixmap::fromImage(receImage));
        sence->addItem(pixmapItem);
        qDebug()<<"接收端字節(jié)流大?。?<<receData.size();
    }
}
 
//開始接收連接
void MainWindow::on_pBtn_receImage_clicked()
{
 
    timerRece=new QTimer(this);
    connect(timerRece,&QTimer::timeout,this,&MainWindow::udpRece);
    timerRece->start(1000);
//    receUdp=new QUdpSocket(this);
//    receUdp->bind(QHostAddress::Any,1234);
//    connect(receUdp,&QUdpSocket::readyRead,this,&MainWindow::udpRece);
}
 
//停止接收
void MainWindow::on_pBtn_stopRece_clicked()
{
    timerRece->stop();
    disconnect(timerRece,&QTimer::timeout,this,&MainWindow::udpRece);
    qDebug()<<"停止接收";
}

結(jié)果顯示

以上就是QT使用udp實(shí)現(xiàn)發(fā)送與接收?qǐng)D片的詳細(xì)內(nèi)容,更多關(guān)于QT發(fā)送接收?qǐng)D片的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C++中函數(shù)重載實(shí)例詳解

    C++中函數(shù)重載實(shí)例詳解

    這篇文章主要介紹了C++中函數(shù)重載實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Qt spdlog日志模塊的使用詳解

    Qt spdlog日志模塊的使用詳解

    在Qt應(yīng)用程序開發(fā)中,良好的日志系統(tǒng)至關(guān)重要,本文將介紹如何使用spdlog 1.5.0創(chuàng)建滿足以下要求的日志系統(tǒng),感興趣的朋友一起看看吧
    2025-04-04
  • C++超詳細(xì)講解模擬實(shí)現(xiàn)vector

    C++超詳細(xì)講解模擬實(shí)現(xiàn)vector

    這篇文章主要介紹了C++ 容器 Vector 的使用方法,Vector 是一個(gè)能夠存放任意類型的動(dòng)態(tài)數(shù)組,有點(diǎn)類似數(shù)組,是一個(gè)連續(xù)地址空間,下文更多詳細(xì)內(nèi)容的介紹,需要的小伙伴可以參考一下
    2022-07-07
  • C語(yǔ)言函數(shù)封裝及變量的作用域

    C語(yǔ)言函數(shù)封裝及變量的作用域

    這篇文章主要介紹了C語(yǔ)言函數(shù)封裝及變量的作用域,以及分享一些字符串的相關(guān)實(shí)戰(zhàn)練習(xí),字符串轉(zhuǎn)整數(shù)、整數(shù)轉(zhuǎn)字符串、浮點(diǎn)數(shù)轉(zhuǎn)字符串、字符串轉(zhuǎn)浮點(diǎn)數(shù)、判斷平年閏年、技術(shù)字符串長(zhǎng)度等等。下文詳細(xì)內(nèi)容需要的小伙伴可以參考一下
    2022-05-05
  • StretchBlt函數(shù)和BitBlt函數(shù)用法案例詳解

    StretchBlt函數(shù)和BitBlt函數(shù)用法案例詳解

    這篇文章主要介紹了StretchBlt函數(shù)和BitBlt函數(shù)用法案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C++求圓柱體的周長(zhǎng)的實(shí)現(xiàn)過(guò)程

    C++求圓柱體的周長(zhǎng)的實(shí)現(xiàn)過(guò)程

    文章解釋了如何計(jì)算圓柱體橫截面的周長(zhǎng),而不是真正的圓柱體周長(zhǎng),因?yàn)閳A柱體是三維的,通過(guò)將圓柱體側(cè)面投影為矩形,計(jì)算公式為周長(zhǎng)(P) = 2 * 直徑(d) + 2 * 高度(h),舉例說(shuō)明了如何使用該公式,并提到計(jì)算時(shí)間復(fù)雜度和空間復(fù)雜度都是O(1)
    2025-10-10
  • C++ 中std::vector<T>的幾種清除方式

    C++ 中std::vector<T>的幾種清除方式

    std::vector<T>?可以通過(guò)多種方式清除(刪除所有元素),本文主要介紹了C++ 中std::vector<T>的幾種清除方式,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-04-04
  • C語(yǔ)言各種操作符透徹理解下篇

    C語(yǔ)言各種操作符透徹理解下篇

    C?語(yǔ)言提供了豐富的操作符,除了上篇中的算術(shù)操作符,移位操作符,位操作符,賦值操作符外,還有單目操作符、關(guān)系操作符、邏輯操作符、條件操作符等等,讓我們通讀本篇來(lái)詳細(xì)了解吧
    2022-02-02
  • C語(yǔ)言線性表順序表示及實(shí)現(xiàn)

    C語(yǔ)言線性表順序表示及實(shí)現(xiàn)

    這篇文章主要介紹了C語(yǔ)言線性表順序表示及實(shí)現(xiàn),線性表是最常用且最簡(jiǎn)單的一種數(shù)據(jù)結(jié)構(gòu)。簡(jiǎn)而言之,一個(gè)線性表是n個(gè)數(shù)據(jù)元素的有限序列
    2022-07-07
  • C語(yǔ)言學(xué)生信息管理系統(tǒng)

    C語(yǔ)言學(xué)生信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12

最新評(píng)論

凤凰县| 扎囊县| 兰州市| 江口县| 安庆市| 杨浦区| 永寿县| 邳州市| 区。| 东台市| 浏阳市| 安龙县| 时尚| 响水县| 长子县| 布尔津县| 介休市| 林州市| 连州市| 雅江县| 哈巴河县| 沈阳市| 特克斯县| 贵阳市| 砀山县| 北票市| 正宁县| 三原县| 黑山县| 温泉县| 万盛区| 龙岩市| 新源县| 大石桥市| 沿河| 千阳县| 沅陵县| 偏关县| 西乡县| 绥棱县| 洱源县|