Exemplo n.º 1
0
        public override async Task Send(SocketConnection conn)
        {
            byte[] bytes = Command.GetBytes();
            byte[] l     = TunnelHelper.IntToBytes(bytes.Length);
            byte[] t     = new byte[1] {
                Type
            };

            List <ArraySegment <byte> > d = new List <ArraySegment <byte> >();

            d.Add(new ArraySegment <byte>(l));
            d.Add(new ArraySegment <byte>(t));
            d.Add(new ArraySegment <byte>(bytes));

            await conn.Socket.SendAsync(d, SocketFlags.None);
        }
Exemplo n.º 2
0
        public override async Task Send(SocketConnection conn)
        {
            byte[] head   = new byte[35];
            byte[] length = TunnelHelper.IntToBytes(Data.Count + 30);
            byte[] remote = Encoding.UTF8.GetBytes(Remote.PadRight(30));

            Array.Copy(length, head, 4);
            head[4] = Type;
            Array.Copy(remote, 0, head, 5, remote.Length);

            List <ArraySegment <byte> > result = new List <ArraySegment <byte> >();

            result.Add(new ArraySegment <byte>(head));

            foreach (BufferSeg item in Data)
            {
                result.Add(new ArraySegment <byte>(item.Buff, item.Start, item.Count));
            }

            await conn.Socket.SendAsync(result, SocketFlags.None);
        }