Exemplo n.º 1
0
        public void Listen()
        {
            using (var udpClient = new UdpClient(_listenPort))
            {
                _listen = true;
                var remoteEp = new IPEndPoint(IPAddress.Any, _listenPort);
                while (_listen)
                {
                    var data = udpClient.Receive(ref remoteEp);
                    if (data.Length <= 0)
                    {
                        continue;
                    }

                    if (_messageQueue.Count > _messageFloodLimit) //Overflow
                    {
                        continue;
                    }

                    var rawMessage = new RawMessage()
                    {
                        Port = remoteEp.Port,
                        IpAddress = remoteEp.Address,
                        Message = System.Text.Encoding.UTF8.GetString(data)
                    };

                    _messageQueue.Enqueue(rawMessage);
                }

                udpClient.Close();
            }
        }
Exemplo n.º 2
0
        public LogMessage(RawMessage rawMessage)
        {
            RawMessage = rawMessage.Message;
            IpAddress = rawMessage.IpAddress + ":" + rawMessage.Port;
            var headerRegex = new Regex(@"^(.*?) - \[");
            var headerMatch = headerRegex.Match(rawMessage.Message);
            if(headerMatch.Success)
            {
                var header = headerMatch.Value;
                ParseHeaderData(header.Remove(header.Length - 4));
            }

            var metaDataRegex = new Regex(@"\[(.*?)\]");
            var metaDataMatch = metaDataRegex.Match(rawMessage.Message);
            if(metaDataMatch.Success)
            {
                var metaData = metaDataMatch.Value.Remove(0, 1);
                metaData = metaData.Remove(metaData.Count() - 1);
                ParseMetaData(metaData);
            }

            var messageRegex = new Regex(@"] *([^\n\r]*)");
            var messageMatch = messageRegex.Match(rawMessage.Message);
            if(messageMatch.Success)
            {
                Message = messageMatch.Value.Remove(0, 2);
            }
        }