亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

QT使用udp實現發(fā)送與接收圖片

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

使用Qt來通過UDP協議發(fā)送和接收圖片可以分為幾個步驟。以下是一個基本的指南:

發(fā)送圖片

準備圖片數據:首先,你需要將圖片轉換為可以在網絡上傳輸的數據格式。通常,這涉及到將圖片轉換為字節(jié)數組。

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

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

//發(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)建端口號
    sendUdp->writeDatagram(receBuffer,QHostAddress::Broadcast,port);//將圖片轉為字節(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);//導入圖片
    ui->label->setPixmap(QPixmap::fromImage(image));//將圖像顯示在標簽label
    ui->label->resize(image.width(),image.height());//根據圖像的大小調整顯示大小
 
}
 
//發(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);//啟動定時器發(fā)送圖片信息
    timerSend->start(1000);//1s發(fā)一次
}
 
//停止發(fā)送
void MainWindow::on_pushButton_clicked()
{
    timerSend->stop();
    disconnect(timerSend,&QTimer::timeout,this,&MainWindow::sendMess);
    qDebug()<<"停止發(fā)送";
}

接收圖片

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

接收數據:使用readDatagram方法來接收數據。你需要處理接收到的數據,并將其轉換回圖片格式。

//接收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()<<"停止接收";
}

結果顯示

以上就是QT使用udp實現發(fā)送與接收圖片的詳細內容,更多關于QT發(fā)送接收圖片的資料請關注腳本之家其它相關文章!

相關文章

  • C++小利器之std::bind參數綁定包裝器的使用詳解

    C++小利器之std::bind參數綁定包裝器的使用詳解

    從 C++11 開始,標準庫提供了 std::bind 用于綁定函數 f 和調用參數,返回一個新可調用函數對象 fn,下面就跟隨小編一起深入了解一下std::bind的具體使用吧
    2023-12-12
  • C語言繪制簡單時鐘小程序

    C語言繪制簡單時鐘小程序

    這篇文章主要為大家詳細介紹了C語言繪制簡單時鐘小程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C語言鏈接屬性的實踐應用

    C語言鏈接屬性的實踐應用

    C語言中鏈接屬性決定如何處理在不同文件中出現的標示符,下面這篇文章主要給大家介紹了關于C語言鏈接屬性的實踐應用,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-03-03
  • C++中this指針用法示例詳解

    C++中this指針用法示例詳解

    在C++編程中this指針是每個非靜態(tài)成員函數的隱含參數,指向調用對象的地址,它用于區(qū)分同一個類的不同實例,并訪問成員變量和成員函數,這篇文章主要介紹了C++中this指針用法的相關資料,需要的朋友可以參考下
    2024-09-09
  • C語言深入講解之從函數棧幀角度理解return關鍵字

    C語言深入講解之從函數棧幀角度理解return關鍵字

    在C語言中,一般情況下函數的返回值是通過函數中的return語句來實現的,每調用一次return語句只能從函數中返回一個值,這篇文章主要給大家介紹了關于C語言從函數棧幀角度理解return關鍵字的相關資料,需要的朋友可以參考下
    2021-09-09
  • 淺談C++虛重載操作符 virtual operator= 的使用方法

    淺談C++虛重載操作符 virtual operator= 的使用方法

    下面小編就為大家?guī)硪黄獪\談C++虛重載操作符 virtual operator= 的使用方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • 使用C語言實現字符串逆序操作案例

    使用C語言實現字符串逆序操作案例

    這篇文章主要介紹了使用C語言實現字符串逆序操作案例,本文包含使用C語言的兩種方法去實現,遞歸和非遞歸,以下就是詳細內容,需要的朋友可以參考下
    2021-07-07
  • C++實現航空訂票程序

    C++實現航空訂票程序

    這篇文章主要為大家詳細介紹了C++實現航空訂票程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C++高級數據結構之優(yōu)先隊列

    C++高級數據結構之優(yōu)先隊列

    這篇文章主要介紹了C++高級數據結構之優(yōu)先隊列,文章圍繞主題的相關資料展開詳細介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • 淺談C++中的mutable和volatile關鍵字

    淺談C++中的mutable和volatile關鍵字

    下面小編就為大家?guī)硪黄獪\談C++中的mutable和volatile關鍵字。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06

最新評論