Beispiel #1
0
        /// <summary>
        /// Обрабатывает новое сообщение, полученное по TCP чата
        /// </summary>
        unsafe void OnChatReceived(TcpPortHandler handler, TcpClientNode node, byte[] buffer, int count)
        {
            // Дешифруем строку, если чат шифрованный
            if (_chatEncoded)
            {
                byte *bytesPtr = stackalloc byte[count];

                for (int i = 0; i < count; i++)
                {
                    bytesPtr[i] = buffer[i];
                }

                ChatCrypt.GSEncodeDecode(_chatClientKey, bytesPtr, count);

                for (int i = 0; i < count; i++)
                {
                    buffer[i] = bytesPtr[i];
                }
            }

            var str = buffer.ToUtf8(count);

            LogTrace(">>>>> " + str);

            //
            var lines = str.Split(_chatSplitChars, StringSplitOptions.RemoveEmptyEntries);

            for (int i = 0; i < lines.Length; i++)
            {
                HandleChatLine(handler, node, lines[i]);
            }
        }
Beispiel #2
0
        unsafe void SendToClientChat(TcpClientNode node, string message)
        {
            LogTrace("<<<<<<<<<<< " + message);

            var bytesToSend = message.ToUTF8Bytes();

            // Шифруем сообщение, если соединение уже с режиме шифрование
            if (_chatEncoded)
                fixed(byte *bytesToSendPtr = bytesToSend)
                ChatCrypt.GSEncodeDecode(_chatServerKey, bytesToSendPtr, bytesToSend.Length);

            _chat.Send(node, bytesToSend);
        }