#68 - Gestire le interfacce e ottenere lo stato della rete
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);
}
Approfondimenti
- Usare LINQ to SQL e WCF in un progetto reale
- La mia implementazione di (quasi) Continuous Integration
- #943 - Leggere feed RSS e Atom con il .NET Framework 3.5
- Deployment dei servizi di ADO.NET Data Services
- L'evoluzione del web secondo Microsoft: Silverlight 1.0 e 2.0
- Aggiornamento dei Silverlight Tools Beta 2 per Visual Studio 2008 SP1
- ASPItalia.com Future Web Conference: 15 gennaio 2008, L'Aquila
- Entity Framework e stranezze(*)
- Rilasciata una patch per l'intellisense jQuery in Visual Studio 2008
- Managed Services Engine
- #5 - Realizzare un bottone in Silverlight
Commenti
Esprimi il tuo giudizio su questo script:
Per procedere devi essere autenticato.
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.





Stampa
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!