/// <summary>
        /// This method checks the completed message.
        /// </summary>
        /// <param name="sender"> The object sender. </param>
        /// <param name="e"> The byte event args. </param>
        private void CheckCompletedMessage(object sender, ByteMessageEventArgs e)
        {
            ProcessListMessage messageType = new ProcessListMessage();
            Ping pingType = new Ping();

            if (e.Message[0] == (byte)messageType.Type)
            {
                List <byte> list     = e.Message.ToList();
                List <byte> hostname = new List <byte>();

                list.RemoveAt(0);

                int hostNameLength = list[0];

                for (int i = 0; i < hostNameLength; i++)
                {
                    hostname.Add(list[i + 1]);
                }

                this.HostName = Encoding.UTF8.GetString(hostname.ToArray());

                list.RemoveRange(0, hostname.Count + 1);

                ProcessListContainer container = NetworkDeSerealizer.DesSerealize(list.ToArray());

                this.FireOnMessageCompleted(new ProcessListEventArgs(container));

                this.ResetTimer();
            }
            else if (e.Message[0] == (byte)pingType.Type)
            {
                this.ResetTimer();
            }
        }
 /// <summary>
 /// This method fires when a byte message has been received.
 /// </summary>
 /// <param name="e"> The byte message. </param>
 protected virtual void FireOnMessageReceived(ByteMessageEventArgs e)
 {
     if (this.OnMessageReceived != null)
     {
         this.OnMessageReceived(this, e);
     }
 }