Bonjour

Je suis entrain de faire une application client/serveur communicant par UDP.
Actuellement les clients doivent ouvrir le port 3301 sur leur routeur pour que les sockets transite correctement (et le serveur doit ouvrir le port 3300, mais sur le serveur ça ne me dérange pas).
Je voudrais savoir s'il est possible de recevoir les sockets UDP sur le client sans qu'il ouvre de port ??

Je post un peu de code quand même. Je travail avec Qt, ça fonctionne, mais sans l'ouverture de port les sockets sont bloqué par le routeur du client :
Coté Serveur :
-Ecoute
Code : C++
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
m_udpSocket = new QUdpSocket;
m_udpSocket->bind(QHostAddress::Any, 3300, QUdpSocket::ShareAddress);
connect(m_udpSocket, SIGNAL(readyRead()), this, SLOT(get()));
-Envoie
Code : C++
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
QUdpSocket udpSocket;
udpSocket.bind(3301); // Je ne sais pas si c'est important de faire ça, mais ça définit le port source du socket
udpSocket.writeDatagram(datagram, ip, 3301);

Coté Client :
-Ecoute
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
m_serverAdress = new QHostAddress("**.**.***.**");
 
m_udpSocket = new QUdpSocket;
m_udpSocket->bind(QHostAddress::Any, 3301, QUdpSocket::ShareAddress); // Si je mets *m_serverAdress au lieu de QHostAddress::Any, Je ne reçoit plus rien sur le client même si le port est ouvert
connect(m_udpSocket, SIGNAL(readyRead()), this, SLOT(get()));
-Envoie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
m_udpSocket->writeDatagram(datagram, *m_serverAdress, 3300);