/// <summary>
        /// Starts the beacon broadcast. Clients will use this beacon to connect to the system.
        /// </summary>
        private void StartBeaconThread()
        {
            string localIP = GetInternalIP();
            //string bkey = commands[2] + "~" + localIP;
            //NetworkCommand nc = new NetworkCommand(NetworkCommand.CommandTypes.CommSystem);
            //nc.IpAddress = localIP;
            CommSystem cs          = new CommSystem(localIP);
            string     broadcastIP = GetBroadcastAddress(localIP);

            EntryOutput(">> Beacon started on IP " + localIP + " and port " + commPort);
            IPEndPoint ip = new IPEndPoint(IPAddress.Parse(broadcastIP), commPort);

            try
            {
                while (CheckRunBeacon)
                {
                    beaconUDP = new UdpClient();
                    Thread.Sleep(1000);
                    byte[] bytes = Encoding.ASCII.GetBytes(cs.ToJson());
                    beaconUDP.Send(bytes, bytes.Length, ip);
                    beaconUDP.Close();
                }
            } catch (SocketException e)
            {
                Console.WriteLine(e.StackTrace);
            }
        }
        /// <summary>
        /// Triggered when a beacon is found on the network. Begins the connection process.
        /// </summary>
        /// <param name="ar">AsyncResult from the beacon being triggered.</param>
        private void BeaconFound(IAsyncResult ar)
        {
            if (!CheckRunBeacon)
            {
                try
                {
                    IPEndPoint endpoint = new IPEndPoint(IPAddress.Any, commPort);
                    byte[]     bytes    = beaconUDP.EndReceive(ar, ref endpoint);
                    string     msg      = Encoding.ASCII.GetString(bytes);
                    //NetworkCommand nc = JsonConvert.DeserializeObject<NetworkCommand>(msg);
                    MessageInterface mi = JsonConvert.DeserializeObject <MessageInterface>(msg);
                    if (mi.Type == "CommSystem")
                    {
                        CommSystem cs = (CommSystem)mi;
                        beaconIP = cs.IPAddress;
                        ConnectToServer(beaconIP);
                    }

                    /*if(nc.Type == NetworkCommand.CommandTypes.CommSystem)
                     * {
                     *  beaconIP = nc.IpAddress;
                     *  ConnectToServer(beaconIP);
                     * }*/
                }
                catch (ObjectDisposedException)
                {
                    EntryOutput("Error 2");
                }
                catch (NullReferenceException)
                {
                    EntryOutput("Error 3");
                }
                catch (ArgumentException)
                {
                    EntryOutput("Error 4");
                }
            }
        }