Пример #1
0
        static void CommandSerialize(Scenarios.CommandType cmd, string Data, out byte[] headerBuffer, out byte[] dataBuffer)
        {
            headerBuffer = new byte[2 + 5];

            byte[] dataBytes = Encoding.UTF8.GetBytes(Data);
            dataBuffer = new byte[2 + dataBytes.Length];

            // Seperators:
            // ============================================
            headerBuffer[0] = headerBuffer[6] = CMD_SEPERATOR;
            dataBuffer[0]   = dataBuffer[1 + dataBytes.Length] = CMD_SEPERATOR;

            // Dataheader:
            // ============================================

            headerBuffer[1] = (byte)cmd;
            byte[] datalengthBytes = BitConverter.GetBytes(dataBytes.Length);
            for (int i = 0; i < 4; i++)
            {
                headerBuffer[2 + i] = datalengthBytes[i];
            }

            // Data:
            // ============================================
            for (int i = 0; i < dataBytes.Length; i++)
            {
                dataBuffer[1 + i] = dataBytes[i];
            }
        }
Пример #2
0
        // ========= ========= ========= High level

        public static async Task <TaskInfo> SendCommand(Scenarios.CommandType cmd, string Data, TcpClient client)
        {
            TaskInfo result;

            try
            {
                byte[] headerBytes, commandBytes;
                CommandSerialize(cmd, Data, out headerBytes, out commandBytes);

                await client.GetStream().WriteAsync(headerBytes, 0, headerBytes.Length);

                await client.GetStream().WriteAsync(commandBytes, 0, commandBytes.Length);

                result = TaskInfo.Success("Command sent.");
            }
            catch (Exception ex)
            {
                result = TaskInfo.Fail(ex.ToString());
            }

            return(result);
        }