private void GetMessage() { byte[] bytesFrom = new byte[_clientSocket.ReceiveBufferSize]; _clientSocket.Client.Receive(bytesFrom); string dataFromClient = Encoding.Unicode.GetString(bytesFrom); lock (_previousPartialMessage) { DetectDisconnectedClient(dataFromClient); try { string completeMessage = _previousPartialMessage + dataFromClient; //string delimieter = MudMessageInstance.Regex; //string[] sections = completeMessage.Split(new[] { delimieter }, StringSplitOptions.RemoveEmptyEntries); Tuple <List <string>, string> result = MudMessageInstance.ParseRawMessage(completeMessage); foreach (string message in result.Item1) { InQueue.Enqueue(message); } _previousPartialMessage = result.Item2; } catch /*(Exception ex)*/ { _previousPartialMessage += dataFromClient; _previousPartialMessage = _previousPartialMessage.Replace("\0", ""); } } }
private void SendMessage(string outboundMessage) { IMudMessage message = MudMessageInstance.CreateNewInstance(); message.Guid = _guid; message.Message = outboundMessage; byte[] sendBytes = Encoding.Unicode.GetBytes(message.Serialize()); NetworkStream networkStream = _clientSocket.GetStream(); networkStream.Write(sendBytes, 0, sendBytes.Length); networkStream.Flush(); }