Superviseur - Collecteur 1.0
Ce logiciel correspond au collecteur de la suite des trois logiciels composant le superviseur
|
00001 #include "hyperviseurudpsocket.h" 00002 00003 00005 00010 HyperviseurUDPSocket::HyperviseurUDPSocket(quint16 port, QObject *parent) : 00011 QUdpSocket(parent) 00012 { 00013 this->bind(QHostAddress::Any, port); 00014 connect(this, SIGNAL(readyRead()), this, SLOT(lireDatagrammes())); 00015 } 00016 00017 00019 00025 void HyperviseurUDPSocket::lireDatagrammes(){ 00026 while(this->hasPendingDatagrams()){ 00027 QByteArray datagramme; 00028 QHostAddress source; 00029 QString sourceStr; 00030 quint32 seqNb; 00031 00032 datagramme.resize(this->pendingDatagramSize()); 00033 this->readDatagram(datagramme.data(), datagramme.size(), &source); 00034 00035 sourceStr = source.toString(); 00036 seqNb = datagramme.left(4).toHex().toUInt(0, 16); 00037 00038 if(this->seqNbTable.contains(sourceStr)){ 00039 if(seqNb != this->seqNbTable.value(sourceStr)+1 && seqNb != 0){ 00040 int temp = ((int)seqNb) - ((int)(this->seqNbTable.value(sourceStr)))+1; 00041 if(temp > 0){ 00042 emit paquetsPerdus( seqNb - (this->seqNbTable.value(sourceStr)+1) ); 00043 } 00044 qDebug() << sourceStr << ": " << QString::number(temp)+" paquet(s) perdu(s)."; 00045 } 00046 } 00047 this->seqNbTable.insert(sourceStr, seqNb); 00048 00049 emit nouvellesDonnes(QString(datagramme.mid(4))); 00050 00051 qDebug() << "Réception de " << sourceStr+" SeqNb:"+QString::number(seqNb);//+"\n\t"+QString(datagramme.mid(4)); 00052 } 00053 }