Example #1
0
        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", "");
                }
            }
        }
Example #2
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();
        }