A partire dalla versione 2.0 del .NET Framework sono state introdotte delle API per gestire le interfacce di rete e quindi tutti gli aspetti della connettività. La classe principale è NetworkInterface che prima di tutto permette di conoscere se è disponibile una connessione valida.
// Stampa la disponibilità della rete
bool network = NetworkInterface.GetIsNetworkAvailable();
Console.WriteLine("IsNetworkAvailable: {0}", network);Attraverso il metodo GetAllNetworkInterfaces si possono ottenere tutte le interfacce installate sulla macchina per conoscere tutti i dati inerenti, come il MAC, la velocità, gli indirizzi IP unicast, multicast, i DNS, gateways ecc. Ecco quindi come sfogliare gli IPv4 delle interfacce di rete installate:
// Stampa il MAC della scheda di rete
foreach (NetworkInterface networkInterface in
NetworkInterface.GetAllNetworkInterfaces())
{
PhysicalAddress pa = networkInterface.GetPhysicalAddress();
Console.WriteLine("MAC: {0}", pa);
IPInterfaceProperties ipInterface = networkInterface.GetIPProperties();
// Stampa gli IPv4
foreach (UnicastIPAddressInformation ip in ipInterface.UnicastAddresses)
if (ip.Address.AddressFamily == AddressFamily.InterNetwork)
Console.WriteLine("IP: {0}", ip.Address);
}Infine con la classe NetworkChange si possono intercettare il cambio dello stato della connessione e il cambio degli indirizzi di rete associati, semplicemente con degli eventi.
// Intercetta il cambio di disponibilità della rete
NetworkChange.NetworkAvailabilityChanged += new
NetworkAvailabilityChangedEventHandler(NetworkChange_NetworkAvailabilityChan
ged);
// Intercetta il cambio di indirizzo
NetworkChange.NetworkAddressChanged += new
NetworkAddressChangedEventHandler(NetworkChange_NetworkAddressChanged);
static void NetworkChange_NetworkAddressChanged(object sender, EventArgs e)
{
Console.WriteLine("Address changed");
}
static void NetworkChange_NetworkAvailabilityChanged(object sender,
NetworkAvailabilityEventArgs e)
{
Console.WriteLine("Available: {0}", e.IsAvailable);
}Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Sfruttare una CDN con i bundle di ASP.NET
- Le DirectInk API nella Universal Windows Platform
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Gli oggetti CallOut di Expression Blend 4.0
- Esaminare documenti XML con namespace utilizzando LINQ to XML


