Qt 的udpSocket通信及相關(guān)

原文:https://blog.csdn.net/uyy203/article/details/51047095

定義

udpSocket = new QUdpSocket(this); 
QByteArray datagram = "http://blog.csdn.net/uyy203"; 
udpSocket->writeDatagram(datagram.data(), datagram.size(), QHostAddress::Broadcast, 8686); 
udpSocket->bind(QHostAddress("192.168.191.10"), 8686); 

UDP客戶端廣播

QUdpSocket *udpsocket1 = new QUdpSocket(this);
QByteArray datagram = "http://blog.csdn.net/uyy203"; udpsocket1->writeDatagram(datagram.data(),datagram.size(), QHostAddress::Broadcast,ui->spinBox->text().toInt());

UDP客戶端發(fā)送到指定IP

QUdpSocket *udpsocket1 = new QUdpSocket(this);
QByteArray datagram = "http://blog.csdn.net/uyy203"; udpsocket1->writeDatagram(datagram.data(),datagram.size(), QHostAddress("192.168.191.10"),ui->spinBox->text().toInt());

收數(shù)據(jù)

connect(udpsocket, SIGNAL(readyRead()), this, SLOT(readPendingDatagrams())); 
while (udpsocket->hasPendingDatagrams()) 
{ 
QByteArray datagram; 
datagram.resize(udpsocket->pendingDatagramSize()); 
QHostAddress sender; 
quint16 senderPort; 
udpsocket->readDatagram(datagram.data(), datagram.size(), &sender, &senderPort); 
qDebug()<<datagram.data()<<datagram.size()<<senderPort<<sender.toString(); //processTheDatagram(datagram);
}

獲取本地IP

QString getLocalIP(){
 
 
    QList<QHostAddress> list = QNetworkInterface::allAddresses();
        foreach (QHostAddress address, list)
        {
           if(address.protocol() == QAbstractSocket::IPv4Protocol)
               return address.toString();
           }
        return  "";
}

本地IP和端口綁定

bool Connect(QString IP,QString port)
{
    udpReceiverSocket->close();
    udpSenderSocket->close();
    bindReceiverFlag=bindSenderFlag=false;
 
 
    bindReceiverFlag=udpReceiverSocket->bind(QHostAddress(IP),port.toInt());
    bindSenderFlag=udpSenderSocket->bind(port.toInt());
 
 
 
 
    if(bindReceiverFlag&&bindSenderFlag)
        return true;
    else
        return false;
 
 
}

接收數(shù)據(jù),獲取數(shù)據(jù)長度,發(fā)送方IP,發(fā)送方端口

udpReceiverSocket->readDatagram(datagram.data(), datagram.size(),&senderIP,&senderPort);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容