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); }
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); }