コード例 #1
0
        public static void Main()
        {
            //Preparing the Threads
            TcpHandler tcpHandler = null;
            var        tasks      = new List <Task>();

            try
            {
                //Using standard Port 8000 and allowing 5 clients in the queue
                tcpHandler = new TcpHandler();

                while (true)
                {
                    //Starting the Threads
                    ConcurrentConnections.Wait();
                    tasks.Add(Task.Run(() => ReceiveClient(tcpHandler)));
                }
            }
            //Hopefully no Exceptions here
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }

            finally
            {
                //When finished stop the Server and set all threads on hold
                tcpHandler?.Stop();
                Task.WaitAll(tasks.ToArray());
            }
        }
コード例 #2
0
ファイル: ClientHandler.cs プロジェクト: Miyoba/MonsterTCG
 public void SendResponse(IResponse response)
 {
     using StreamWriter writer = new StreamWriter(TcpHandler.GetStream())
           {
               AutoFlush = true
           };
     writer.WriteLine(response.Content);
 }
コード例 #3
0
ファイル: ClientHandler.cs プロジェクト: Miyoba/MonsterTCG
        public IResponse ExecuteRequest()
        {
            StreamReader reader = new StreamReader(TcpHandler.GetStream());

            Request = new RequestContext(reader);
            if (Request.CheckRequest())
            {
                RequestManager = new MessageManager(Request);
                var          text     = RequestManager.ProcessRequest();
                TextResponse response = new TextResponse(StatusCodesEnum.Ok, text);
                return(response);
            }
            return(new TextResponse(StatusCodesEnum.BadRequest, Request.GetBadRequest("Bad Request!")));
        }
コード例 #4
0
ファイル: ClientHandler.cs プロジェクト: Miyoba/MonsterTCG
 public void CloseClient()
 {
     TcpHandler.CloseClient();
 }