Bonjour, avec Qt la doc propose d'utiliser readDatagram() et writeDatagram() pour recevoir et envoyer des données sur le reseau (en UDP).
http://qt.developpez.com/doc/latest/qudpsocket.html
Or readDatagram() est appelé par un signal, et peut donc etre appelé n'importe quand, y compris pendant que je manipule mes données pour writeDatagram()![]()
Quelle solution élégante et portable me conseillez vous pour faire un accés exlusif, afin que les traitements de reception et d'expédition se fassent l'un après l'autre et pas en même temps ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part connect(udpSocket, SIGNAL(readyRead()),this, SLOT(readPendingDatagrams()));
Dsant
Le code de l'exemple de Trolltech :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 void Server::initSocket() { udpSocket = new QUdpSocket(this); udpSocket->bind(QHostAddress::LocalHost, 7755); connect(udpSocket, SIGNAL(readyRead()), this, SLOT(readPendingDatagrams())); } void Server::readPendingDatagrams() { while (udpSocket->hasPendingDatagrams()) { QByteArray datagram; datagram.resize(udpSocket->pendingDatagramSize()); QHostAddress sender; quint16 senderPort; udpSocket->readDatagram(datagram.data(), datagram.size(), &sender, &senderPort); processTheDatagram(datagram); } }
Partager