Just because your application might not need it, doesn't mean my does too.

I have an application, that talks to the server. It opens up a connection, and starts talking with the server. On the server, I don't mind if it just listens and fires everything to an event (non-blocking), and then the server does stuff, and responds back.

On the client tho, I need it to do the same thing. If the server needs to send a command to the client (like when a new client connects), the server needs to send a command to all the clients. Therefore a non-blocking method needs to be implemented on the clients. The only problem is, on some occasions, I need to send a command to the server, and then the server needs to give a response back right away. I need a blocking method, to send a message to the server, then get a response back right away. The problem is that background thread, that listens all the time.