static Task C2S2Async(Stream stream, byte[] randomBytes, CancellationTokenSource cts, Timer timer)
        {
            timer.Change(Timeout.Infinite, Timeout.Infinite);

            var s2 = new RtmpHandshake()
            {
                Time   = (uint)Environment.TickCount,
                Time2  = 0,
                Random = randomBytes
            };

            //c2
            Task.WaitAll(new Task[] { Task.Factory.StartNew(() => { RtmpHandshake.Read(stream, false); }) }, 3000);
            //s2
            timer.Change(SendTimeout, Timeout.Infinite);
            return(RtmpHandshake.WriteAsync(stream, s2, false, cts.Token));
        }
 static void C2S2(Stream stream)
 {
     RtmpHandshake.Read(stream, false);
 }