Beispiel #1
0
        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();
        }
Beispiel #2
0
        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();
            }
        }