Pointer references to TcpClient are never deleted:
std::istream& inputStream = dispatcherStream ? *dispatcherStream : std::cin;
std::ostream& outputStream = dispatcherStream ? *dispatcherStream : std::cout;
Suggested (conditionally) delete &inputStream; and delete &outputStream;