Ejemplo n.º 1
0
        /// <summary>
        /// Начало прослушивания для приема сообщений
        /// </summary>
        public void Listen()
        {
            //
            using (var client = new UdpClient(HostConstants.Port))
            {
                IPEndPoint ip = null;

                while (true)
                {
                    //ждем сообщение
                    var bytes = client.Receive(ref ip);

                    //TODO это в отдельный поток
                    {
                        //полученное сообщение кладем в очередь
                        var message = MessageBase.FromBytes(bytes) as MessageChannelMessage;
                        if (message != null)
                        {
                            if (channelList.Channels.Any(c => c.Key == message.Name))
                            {
                                channelList.Channels.FirstOrDefault(c => c.Key == message.Name).Value.Set(message.Text);
                                Console.WriteLine("message added for channel {0}: {1}", message.Name, message.Text);
                            }
                            else
                            {
                                Console.WriteLine("message skipped for channel {0}", message.Name);
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Прием сообщения
        /// </summary>
        private IMessageBase ReceiveMessage()
        {
            byte[] buffer = new byte[64];
            var    bytes  = new byte[] { };

            int bytesCnt = 0;

            do
            {
                bytesCnt = stream.Read(buffer, 0, buffer.Length);
                bytes    = bytes.Concat(buffer).ToArray();
            }while (stream.DataAvailable);

            return(MessageBase.FromBytes(bytes));
        }