Sockets Programming Question
-
Hello all!
I have a sockets programming question. I have a QTcpServer listening to a port, when new connections are available, they are returned by nextPendingConnection as a QTcpSocket which uses the same port as QTcpServer. Now let's say that I have two different QTcpSockets using the same port, plus the QTcpServer which is also listening to it. This means 3 objects using the same port to communicate.
Now my question is, if new data arrives and it is meant for QTcpSocket 1, what happens to QTcpSocket 2 and the QTcpServer? Can they see this new data? Can they 'steal' it from QTcpSocket 1?
Thanks in advance
-
[quote author="Alegen" date="1297422715"]Now my question is, if new data arrives and it is meant for QTcpSocket 1, what happens to QTcpSocket 2 and the QTcpServer? Can they see this new data? Can they 'steal' it from QTcpSocket 1?
Thanks in advance[/quote]This is handled by the OS/Qt:
bq. Wikipedia on "Berkeley Sockets":http://en.wikipedia.org/wiki/Berkeley_sockets
accept() is used on the server side. It accepts a received incoming attempt to create a new TCP connection from the remote client, and creates a new socket associated with the socket address pair of this connection.In fact the connection is determined by
- listening socket IP address
- listening socket port number
- connecting socket IP address
- connecting socket port number
This quadruple unambiguously identifies the connection. In case of NAT coming into the game or some application is connecting in parallel, the connecting IP address is the same, but the ports do differ.