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(); } }
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); } }