QTcpServer that responds to multiple QTcpSockets at the same time.
-
I am developing a QTcpServer which will forward TCP data to another server which takes -/+ 1min to respond. The problem is when the data comes back, I have to send it to the correct socket which requested the data.
What my server does is strip the authentication data or login details every time a request or data is sent from the client. after validating the data on the MYSQL database i have to forward it to another server as an HTTP request. When the response arrives 1 - 2 mins later, i have to write it back on the correct server.
Is there any kind of approach i can take for my QTcpServer to be able to know which Socket requested what data and be able to respond to the correct one when the data return from another server.
Please advise.
-
Hi,
What are you using to send the request to that other server ?
-
you can use
QAbstractSocket::socketDescriptor()as ID of the destination but you will need a way to link a request to a response i.e. when an answer comes back to you you have to find a way to identify what the question wasThread1
- establish connection between server and HTTP server
Thread2:
- started when connection is enstablished between Server and Client
- receives the requests, passes it to thread 1 together with its socketDescriptor
Thread1
- receives the request, stores the socketDescriptor to remember who asked the question
- receives the answer, it finds out what the question was and who asked it
- sends the response to the socket with the asker socketDescriptor
Thread2:
- receives the replay and forwards it to the client
-
Wouldn't a
QMap<QNetworkReply *, QTcpSocket *>be enough ? That way it would be possible to associate the reply of the secondary request to the socket where the original stuff is coming from. -
Wouldn't a
QMap<QNetworkReply *, QTcpSocket *>be enough ? That way it would be possible to associate the reply of the secondary request to the socket where the original stuff is coming from. -
@VRonin using the Threading technique, how do i make sure that Thread 2 doesn't respond to two requests at the same time, which i think will crash the application. using
QMutex? -
@VRonin using the Threading technique, how do i make sure that Thread 2 doesn't respond to two requests at the same time, which i think will crash the application. using
QMutex?