how can you receive anything concurrently? there's one pipe the data is flowing down. And looking at the java client EClientSocket class it has one thread running writing to the socket output stream
As far as the connection is concerned, you're right, it all goes over one pipe. But the transmit time is not the bottleneck and is relatively insignificant. It's the processing and response time. As I mentioned earlier, I can fire off 5 requests in less than a fraction of a second, but the data comes back one at a time in the order that my requests were made with relatively long gaps between each response. So it seems that even though the server gets all my requests at the same time, it processes them one at a time instead of concurrently. Pulling the actual bid/ask/last and delta on each contract is different. It seems that the server processes those requests concurrently.
It used to be eight, but has recently been increased to 32 connections. I have not tried this myself though.