示例#1
0
        private async Task EchoInit(Socket socket)
        {
            while (true)
            {
                var socketWrappedInTask = await Task.Factory.FromAsync(
                    new Func <AsyncCallback, object, IAsyncResult>(socket.BeginAccept), //Begin Accept returns IAsyncResult
                    new Func <IAsyncResult, Socket>(socket.EndAccept),
                    null).ConfigureAwait(false);

                Console.WriteLine("Echo Server: Client Connected!");

                using var stream = new NetworkStream(socketWrappedInTask, true);
                var buffer = new byte[1024];

                var            prot = new Protocol();
                MessageHandler mh   = new MessageHandler();



                while (true)
                {
                    var receivedMessage = await prot.Receive <MessageModel>(stream).ConfigureAwait(false);

                    //Console.WriteLine(receivedMessage.MessageData);

                    _ = Task.Run(() => mh.Handle(receivedMessage)).ConfigureAwait(false);


                    if (receivedMessage.MessageHeaderType != 11 && receivedMessage.MessageHeaderType != 12)
                    {
                        await prot.Send(stream, receivedMessage).ConfigureAwait(false);
                    }
                }
            }
        }