Beispiel #1
0
        private void DoHandshake(Stream stream)
        {
            // read c0+c1
            var c01 = RtmpHandshake.Read(stream, true);

            var random      = new Random();
            var randomBytes = new byte[1528];

            random.NextBytes(randomBytes);

            // write s0+s1+s2
            var s01 = new RtmpHandshake
            {
                Version = 3,
                Time    = (uint)Environment.TickCount,
                Time2   = 0,
                Random  = randomBytes
            };
            var s02 = s01.Clone();

            s02.Time2 = (uint)Environment.TickCount;
            RtmpHandshake.WriteAsync(stream, s01, s02, true);

            // read c02
            var c02 = RtmpHandshake.Read(stream, false);

            hasConnected = true;
        }
Beispiel #2
0
        async void OnClientAccepted(IAsyncResult ar)
        {
            TcpListener listener = ar.AsyncState as TcpListener;

            if (listener == null)
            {
                return;
            }

            try
            {
                TcpClient client = listener.EndAcceptTcpClient(ar);
                var       stream = await GetRtmpStreamAsync(client);

                // read c0+c1
                var c01 = await RtmpHandshake.ReadAsync(stream, true);

                var random      = new Random();
                var randomBytes = new byte[1528];
                random.NextBytes(randomBytes);

                // write s0+s1+s2
                var s01 = new RtmpHandshake()
                {
                    Version = 3,
                    Time    = (uint)Environment.TickCount,
                    Time2   = 0,
                    Random  = randomBytes
                };
                var s02 = s01.Clone();
                s02.Time2 = (uint)Environment.TickCount;
                await RtmpHandshake.WriteAsync(stream, s01, s02, true);

                // read c02
                var c02 = await RtmpHandshake.ReadAsync(stream, false);

                RtmpClient rtmpClient = new RtmpClient(_serverUri, _context, stream);
                rtmpClient.ServerMessageReceived += ServerMessageReceived;
                rtmpClient.ServerCommandReceived += ServerCommandReceived;
                _clients.Add(rtmpClient);
            }
            finally
            {
                listener.BeginAcceptTcpClient(OnClientAccepted, listener);
            }
        }
        private void DoHandshake(Stream stream)
        {
            RtmpHandshake.Read(stream, true);
            Random random = new Random();

            byte[] numArray = new byte[1528];
            byte[] buffer   = numArray;
            random.NextBytes(buffer);
            RtmpHandshake h = new RtmpHandshake()
            {
                Version = 3, Time = (uint)Environment.TickCount, Time2 = 0, Random = numArray
            };
            RtmpHandshake h2 = h.Clone();

            h2.Time2 = (uint)Environment.TickCount;
            RtmpHandshake.WriteAsync(stream, h, h2, true);
            RtmpHandshake.Read(stream, false);
        }
Beispiel #4
0
        async void OnClientAccepted(IAsyncResult ar)
        {
            TcpListener listener = ar.AsyncState as TcpListener;
            if (listener == null)
                return;

            try
            {
                TcpClient client = listener.EndAcceptTcpClient(ar);
                var stream = await GetRtmpStreamAsync(client);

                // read c0+c1
                var c01 = await RtmpHandshake.ReadAsync(stream, true);

                var random = new Random();
                var randomBytes = new byte[1528];
                random.NextBytes(randomBytes);

                // write s0+s1+s2
                var s01 = new RtmpHandshake()
                {
                    Version = 3,
                    Time = (uint)Environment.TickCount,
                    Time2 = 0,
                    Random = randomBytes
                };
                var s02 = s01.Clone();
                s02.Time2 = (uint)Environment.TickCount;
                await RtmpHandshake.WriteAsync(stream, s01, s02, true);

                // read c02
                var c02 = await RtmpHandshake.ReadAsync(stream, false);

                RtmpClient rtmpClient = new RtmpClient(_serverUri, _context, stream);
                rtmpClient.ServerMessageReceived += ServerMessageReceived;
                rtmpClient.ServerCommandReceived += ServerCommandReceived;
                _clients.Add(rtmpClient);
            }
            finally
            {
                listener.BeginAcceptTcpClient(OnClientAccepted, listener);
            }
        }
        private void DoHandshake(Stream stream)
        {
            // read c0+c1
            var c01 = RtmpHandshake.Read(stream, true);

            var random = new Random();
            var randomBytes = new byte[1528];
            random.NextBytes(randomBytes);

            // write s0+s1+s2
            var s01 = new RtmpHandshake()
            {
                Version = 3,
                Time = (uint) Environment.TickCount,
                Time2 = 0,
                Random = randomBytes
            };
            var s02 = s01.Clone();
            s02.Time2 = (uint) Environment.TickCount;
            RtmpHandshake.WriteAsync(stream, s01, s02, true);

            // read c02
            var c02 = RtmpHandshake.Read(stream, false);
            hasConnected = true;
        }