static void Main(string[] args) { var kernel = new StandardKernel(); kernel.Bind <ICommandBuilder>().To <CommandBuilder>().InSingletonScope(); var commandBuilder = kernel.Get <ICommandBuilder>(); var command = commandBuilder.Build(args); if (command.IsValid() == false) { throw new ArgumentNullException($"Command is invalid"); } var flatCommand = command.ToString(); TcpClient client = null; NetworkStream stream = null; try { var connection = ConnectionUtils.ParseConnectionParams(args); client = new TcpClient(connection.IpAddress.ToString(), connection.Port); // request stream = client.GetStream(); var requestBytes = Encoding.Unicode.GetBytes(flatCommand); stream.Write(requestBytes, 0, requestBytes.Length); // response var responseBytes = new byte[MessageLength]; var builder = new StringBuilder(); do { var bytes = stream.Read(responseBytes, 0, responseBytes.Length); builder.Append(Encoding.Unicode.GetString(responseBytes, 0, bytes)); }while (stream.DataAvailable); Console.WriteLine("{0}", builder); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { client?.Close(); stream?.Close(); } Console.WriteLine("Done..."); Console.ReadKey(); }
static void Main(string[] args) { Console.WriteLine($"Dictionary server starting..."); var registrations = new NinjectRegistrations(); var kernel = new StandardKernel(registrations); var wordDictionary = kernel.Get <IWordDictionary>(); var commandBuilder = kernel.Get <ICommandBuilder>(); var logger = kernel.Get <ILogger>(); TcpListener listener = null; try { var connectionInfo = ConnectionUtils.ParseConnectionParams(args); listener = new TcpListener(connectionInfo.IpAddress, connectionInfo.Port); listener.Start(); Console.WriteLine($"Waiting for connections at {connectionInfo.IpAddress}:{connectionInfo.Port}"); while (true) { var client = listener.AcceptTcpClient(); var clientObject = new ClientObject(client, wordDictionary, commandBuilder, logger); var action = new Action(clientObject.Process); ThreadPool.QueueUserWorkItem(t => action()); } } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { listener?.Stop(); Console.ReadKey(); } }