Threaded SocketManager

Threads for both listening and requesting are functional. Threads can
communicate using queues. See ControlMain.java for example.