Like Jerry explained, if you're looking to handle multiple requests using a single socket you'll have to add an identifier to each connection.
Each paquet should be like this:
BUFF_SIZE | DATA | UNIQUE_ID
I just made a simple reverse proxy in C++ if you want to check it out: ReverseProxy. It uses a single socket for all the interactions between the client and the server.
It's in Spanish but I hope the code is easy to read and understand :)