Hi,
I’m trying to establish a QUdpSocket connection between two peers that are
behind firewalls.
From what I have been reading, one way of doing this is recurring to a STUN
Server, performing a bind request which will have as response our public IP and
a port and not closing the socket.
Then, using the same socket, read data from it but from my experiments I’m
never able to receive data on that socket sent by the other peer. Works locally
but never publicly!
I don’t know what I’m doing wrong or how to debug. What am I missing here?
Thanks!
Regards,
Nuno
// server
uint8_t tsx_id[12] = { 1 };
stun::message msg(stun::message::binding_request, tsx_id);
_socket = new QUdpSocket(this);
_socket->bind(3800); // binds socket without host specified
_socket->writeDatagram((char*) msg.data(), msg.size(),
QHostAddress("66.102.1.127"), 19302); // sends binding request to stun server
...
stun::message reply;
reply.resize(2*1024);
_socket->readDatagram((char*) reply.data(), reply.capacity(), &host, &port);
// receives reply from stun server with public address and port, e.g.:
“X.Y.Z.W” port 3800
...
int data=0;
_socket->readDatagram((char*) &data, sizeof(int)) << data; // reads data from
socket but nothing comes in
// client
static int data=0;
int port=3800
QHostAddress host("X.Y.Z.W");
_socket = new QUdpSocket(this);
_socket->writeDatagram(QString(data).toUtf8(), host, port) << data++; //
successfully writes data to public IP and port of the peer
_______________________________________________
Interest mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/interest