Пример #1
0
 private void DataReceived(object sender, TcpClientConnection.DataReceivedEventArgs e)
 {
     try
     {
         Console.WriteLine("Data received: {0}", e.Data);
         var     element = XElement.Parse(e.Data);
         Message message = messageConverter.ConvertFromXml(element);
         Console.WriteLine("Message received: {0}", message);
     }
     catch (Exception ex)
     {
         Console.WriteLine("Error processing data: {0}", ex);
     }
 }
Пример #2
0
        void DataReceived(object sender, TcpServer.DataReceivedEventArgs e)
        {
            Console.WriteLine("Data received!");
            try
            {
                // Converting received data to xml
                var xml = ASCIIEncoding.UTF8.GetString(e.Data, 0, e.Data.Length);
                Console.WriteLine("Data received from {0}: {1}", e.IPEndPoint, xml);
                XElement xmlElement = XElement.Parse(xml);
                Console.WriteLine("Xml data: " + xmlElement);

                // TODO: we're not dealing with splitted message. fix this later

                // Creating message from xml string
                Message message          = messageConverter.ConvertFromXml(xmlElement);
                long    currentMessageId = message.Id;
                Command command          = message.Command;
                switch (command.CommandType)
                {
                case CommandType.Ack:
                    // Server can't get this command
                    break;

                case CommandType.Login:
                    HandleLoginMessage(currentMessageId, (LoginCommand)command, e.IPEndPoint);
                    break;

                case CommandType.UserState:
                    HandleUserStateCommand(currentMessageId, (UserStateCommand)command);
                    break;

                case CommandType.TextMessage:
                    HandleTextMessageCommand(currentMessageId, (TextMessageCommand)command);
                    break;

                default:
                    Debug.Assert(false, "Unknown command type: " + command.CommandType);
                    break;
                }
                //tcpServer.SendData(e.Data, e.IPEndPoint);

                //Это может быть регистрационное сообщение
                //var userName = doc.Descendants("userName").SingleOrDefault();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error processing data. {0}", ex);
            }
        }