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