private void HandleAddressChange(object sender, EventArgs e)
        {
            Tracing?.TraceEvent(TraceEventType.Warning, 1000, "Network address change occurred");

            //we need to test if there is a new LanIP
            var cnns = new List <Connection>(SecondaryConnections);

            cnns.Add(PrimaryConnection);
            var  ipToCheck        = LanIP.ToString();
            bool alreadyListening = false;

            foreach (var cnn in cnns)
            {
                var l = (TCPListener)cnn;
                if (l.IP.ToString().Equals(ipToCheck))
                {
                    alreadyListening = true;
                    Tracing?.TraceEvent(TraceEventType.Information, 1000, "Already listening on {0}", ipToCheck);
                    break;
                }
            }

            if (!alreadyListening)
            {
                Tracing?.TraceEvent(TraceEventType.Information, 1000, "Adding secondary listener for IP {0}", ipToCheck);
                var cnn = CreatePrimaryConnection(ipToCheck);
                SecondaryConnections.Add((ServerConnection)cnn);
                if (IsRunning)
                {
                    Tracing?.TraceEvent(TraceEventType.Information, 1000, "Opening secondary listener for IP {0}", ipToCheck);
                    cnn.Open();
                }
            }
        }
        public override void Start()
        {
            SecondaryConnections.Clear();

            List <IPAddress> ips = LanIPs;

            foreach (IPAddress addr in ips)
            {
                var cnn = CreatePrimaryConnection(addr.ToString());
                SecondaryConnections.Add((ServerConnection)cnn);
            }

            base.Start();

            NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler(HandleAddressChange);
        }