public InterfaceController(InterfaceSelectionViewModel v, IMessageService m) { vm = v; message = m; vm.Interfaces = new BindingList <NetInterface>(); IPAddress[] localIPs = Dns.GetHostAddresses(Dns.GetHostName()); foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) { if (nic.OperationalStatus == OperationalStatus.Up && nic.Supports(NetworkInterfaceComponent.IPv4)) { var i = new NetInterface { Description = nic.Description, Name = nic.Name, Speed = nic.Speed }; IPInterfaceProperties ipProps = nic.GetIPProperties(); foreach (UnicastIPAddressInformation address in ipProps.UnicastAddresses) { if (address.Address.AddressFamily == AddressFamily.InterNetwork && localIPs.Contains(address.Address) && !IPAddress.IsLoopback(address.Address)) { i.Address = address.Address; vm.Interfaces.Add(i); break; } } } } //Select primary interface. Just go with the lowest foreach (IPAddress t in localIPs) { vm.SelectedInterface = vm.Interfaces.Where(s => Equals(s.Address, t)).FirstOrDefault(); if (null != vm.SelectedInterface) { break; } } vm.Quit = new DelegateCommand(Quit); vm.Select = new DelegateCommand(Select); }
public InterfaceController(InterfaceSelectionViewModel v, IMessageService m) { vm = v; message = m; vm.Interfaces = new BindingList<NetInterface>(); IPAddress[] localIPs = Dns.GetHostAddresses(Dns.GetHostName()); foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) { if (nic.OperationalStatus == OperationalStatus.Up && nic.Supports(NetworkInterfaceComponent.IPv4)) { var i = new NetInterface {Description = nic.Description, Name = nic.Name, Speed = nic.Speed}; IPInterfaceProperties ipProps = nic.GetIPProperties(); foreach (UnicastIPAddressInformation address in ipProps.UnicastAddresses) { if (address.Address.AddressFamily == AddressFamily.InterNetwork && localIPs.Contains(address.Address) && !IPAddress.IsLoopback(address.Address)) { i.Address = address.Address; vm.Interfaces.Add(i); break; } } } } //Select primary interface. Just go with the lowest foreach (IPAddress t in localIPs) { vm.SelectedInterface = vm.Interfaces.Where(s => Equals(s.Address, t)).FirstOrDefault(); if (null != vm.SelectedInterface) break; } vm.Quit = new DelegateCommand(Quit); vm.Select = new DelegateCommand(Select); }