QT UDP通信接受發送數據


首先在.pro文件中加入 QT +=network;

 

客戶端

1.建立socket

sender = new QUdpSocket(this);

2.綁定端口

sender->bind(45453,QUdpSocket::ShareAddress);

3.接受數據

 connect(sender,SIGNAL(readyRead()),this,SLOT(processPendingDatagram())); 

void processPendingDatagram() //處理等待的數據報
{
    while(sender->hasPendingDatagrams()) //擁有等待的數據報
    {
        QByteArray datagram; //擁於存放接收的數據報
        datagram.resize(sender->pendingDatagramSize());
        sender->readDatagram(datagram.data(),datagram.size());
        unsigned short size = datagram.size();
        unsigned char msg[10] = {0};
        memcpy(msg, datagram.data(), size);
        unsigned short arr = msg[0];
        arr = (arr<<8)+msg[1];
        qDebug()<<msg[0]<<msg[1]<<msg[2]<<msg[3];
    }
}

4.發送數據

sender->writeDatagram((char*)msg,3, QHostAddress::Broadcast,45454);

 

服務端

1.建立Socket 

receiver = new QUdpSocket(this);

2.綁定端口

receiver->bind(45454,QUdpSocket::ShareAddress);

3.接受數據

    connect(receiver,SIGNAL(readyRead()),this,SLOT(processPendingDatagram()));

void processPendingDatagram() //處理等待的數據報
{
    while(receiver->hasPendingDatagrams()) //擁有等待的數據報
    {
        QByteArray datagram; //擁於存放接收的數據報
        datagram.resize(receiver->pendingDatagramSize());
        receiver->readDatagram(datagram.data(),datagram.size());
        unsigned short size = datagram.size();
        unsigned char msg[10] = {0};
        memcpy(msg, datagram.data(), size);

        qDebug()<<msg[0]<<msg[1]<<msg[2]<<msg[3];
    }
}

 

4.發送數據
   receiver->writeDatagram((char*)msg,3, QHostAddress::Broadcast,45453); 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM