Esempio n. 1
0
        private void sendMessage(byte[] data, RtmpMessageTypeId messageType)
        {
            const byte chunkHeaderType = 0x03;

            var timeStampDelta = new byte[3] {
                0x00, 0x00, 0x10
            };

            //The packet length is only 3 bytes long when sent, so the last byte of the integer needs to be cut off
            var packetLengthBytes = new byte[3];
            {
                var packetLengthValue = data.Length;

                var packetLengthBytesFull = converter.GetBytes(packetLengthValue);
                for (var i = 0; i < packetLengthBytes.Length; i++)
                {
                    packetLengthBytes[i] = packetLengthBytesFull[i + 1];
                }
            }

            var memory = new MemoryStream();
            var writer = new EndianBinaryWriter(EndianBitConverter.Big, memory);

            writer.Write(chunkHeaderType);
            writer.Write(timeStampDelta);
            writer.Write(packetLengthBytes);
            writer.Write((byte)messageType);

            var streamIdBytes = converter.GetBytes(StreamId);

            for (int i = streamIdBytes.Length - 1; i >= 0; i--)
            {
                writer.Write(streamIdBytes[i]);
            }
            writer.Write(data);
            tcpClient.GetStream().Write(memory.ToArray(), 0, memory.ToArray().Length);
        }
Esempio n. 2
0
 protected virtual void ParseMessage(RtmpMessageTypeId messageType, EndianBinaryReader reader)
 {
     //this should be done in the derived classes
 }
Esempio n. 3
0
        private void sendMessage(byte[] data, RtmpMessageTypeId messageType)
        {
            const byte chunkHeaderType = 0x03;

            var timeStampDelta = new byte[3] { 0x00, 0x00, 0x10 };

            //The packet length is only 3 bytes long when sent, so the last byte of the integer needs to be cut off
            var packetLengthBytes = new byte[3];
            {
                var packetLengthValue = data.Length;

                var packetLengthBytesFull = converter.GetBytes(packetLengthValue);
                for (var i = 0; i < packetLengthBytes.Length; i++)
                {
                    packetLengthBytes[i] = packetLengthBytesFull[i + 1];
                }
            }

            var memory = new MemoryStream();
            var writer = new EndianBinaryWriter(EndianBitConverter.Big, memory);
            writer.Write(chunkHeaderType);
            writer.Write(timeStampDelta);
            writer.Write(packetLengthBytes);
            writer.Write((byte)messageType);

            var streamIdBytes = converter.GetBytes(StreamId);
            for (int i = streamIdBytes.Length - 1; i >= 0; i--)
            {
                writer.Write(streamIdBytes[i]);
            }
            writer.Write(data);
            tcpClient.GetStream().Write(memory.ToArray(), 0, memory.ToArray().Length);
        }
Esempio n. 4
0
 protected virtual void ParseMessage(RtmpMessageTypeId messageType, EndianBinaryReader reader)
 {
     //this should be done in the derived classes
 }