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