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