All of my networking applications I have developed have used the blocking socket model. I'm about to start a new project and it requires that the user be able to send requests to a connected server and receive responses on the same socket in parallel without data race.
And might I add this is a multithreaded application as well (x clients to 1 server) and so I want to be able to send a request to the server simultaneously without having to wait for the previous recv/send but at the same time be able to receive a response on the same socket. I hope this makes sense.
The last choice I have is to use the HTTP model of connect/receive > request/serve > close for each request.
PS: I'm not looking for code