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++
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++
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
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
m_udpSocket->writeDatagram(datagram, *m_serverAdress, 3300);
Partager