partially refactored SocketLink.*TcpClient