示例#1
0
        public static int GetBytes(this FrameType frameType, DotNetty.Buffers.IByteBuffer input)
        {
            switch (frameType)
            {
            case FrameType.VariableByte:
                return(input.ReadByte());

            case FrameType.VariableShort:
                return(input.ReadUnsignedShort());

            default:
                throw new ArgumentException("Invalid frameType input argument");
            }
        }
示例#2
0
        public override void ChannelRead(IChannelHandlerContext context, object message)
        {
            DotNetty.Buffers.IByteBuffer buffer = message as DotNetty.Buffers.IByteBuffer;
            if (buffer != null)
            {
                Console.WriteLine("Received from client[" + context.Channel.RemoteAddress + "]: " + buffer.ToString(Encoding.UTF8));
            }
            var newBuffer = DotNetty.Buffers.Unpooled.WrappedBuffer(buffer.ToArray());

            System.Threading.Thread th = new System.Threading.Thread((msg) =>//使用新线程处理业务,避免阻塞ChannelRead方法处理复杂业务时,导致不同次收到的消息连成一片。
            {
                //这里是业务逻辑代码。
                //System.Threading.Thread.Sleep(2000);
                //下发过程。
                context.WriteAndFlushAsync(msg);
            });
            th.IsBackground = true;
            th.Start(newBuffer);
        }