QUdpSocket en tant que QIODevice pour IPC
Bonjour,
J'ai quelques difficulté avec la classe QUdpSocket, qui ne fonctionne pas dans mon projet.
Mon but est d'utiliser une QUdpSocket pour faire communiquer ensemble deux programmes de la même machine.
Seulement le gestionnaire de connexion est une classe qui peut gérer plusieurs types de connexion (Udp, Serial, File, etc), je dois donc me limiter aux fonctions de QIODevice pour utiliser ce UdpSocket.
Dans mon progamme test, je le crée de cette manière :
Fonction de création :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
[...]
else if(DeviceFactory::isUdpSocket(name))
{
QUdpSocket* socket = new QUdpSocket;
socket->bind(QHostAddress::LocalHost, DeviceFactory::getUdpPort(name));
socket->connectToHost(QHostAddress::LocalHost, DeviceFactory::getUdpPort(name));
if(socket->waitForConnected())
{
device = socket; // device est un attribut de type QIODevice* utilisé dans le reste de la classe
qInfo() << "Socket connected " << name;
}
else
qWarning() << QObject::tr("Socket %1 not connected :\n\t").arg(name) + socket->errorString();
}
[...]
if(device)
connect(device, &QIODevice::readyRead, this, &CommuniactionHandler::receive);
[...] |
La fonction receive() appelle device->readAll();
Le problème est que, lorsque je lance deux instances de mon programme pour les faire communiquer entre eux sur le même port, rien ne passe, le second ne reçoit pas ce que le premier a envoyé.
Je me suis bien assuré, avec que le qInfo() que le socket est bien connecté des deux côtés, mais le signal readyRead() n'est jamais émit.
Qu'est-ce que je fais de travers ?