Come determinare quale scheda di rete è connessa a Internet

Sto scrivendo un programma in C # che deve monitorare la quantità di banda internet attualmente in uso in modo che possa fare un upload in background quando l’utilizzo di internet è basso. Come posso determinare automaticamente quale scheda di rete è quella connessa a Internet?

Ho finito per seguire un collegamento a MSDN mentre stavo leggendo questa pagina dove ho trovato la funzione GetBestInterface . Sono stato in grado di usarlo per trovare l’adattatore che è connesso a Internet

Esaminare la tabella di routing e cercare le interfacce che hanno una route predefinita (una route verso 0.0.0.0 ) – questa è la tua interfaccia (o le tue) che sono collegate al mondo più ampio (se esiste).

Vedi qui per una domanda simile su come monitorare la larghezza di banda utilizzata, in VB.NET, ma la filosofia è la stessa! Ecco un’altra domanda che è il modo più veloce per verificare la connessione a Internet.

Spero che questo aiuti, Cordiali saluti, Tom.

È ansible utilizzare WMI per interrogare tutti gli adattatori e vedere quale è connesso.
Questo articolo mostra come farlo in VB.Net (facilmente trasferibile in C #).

Ci sono molti modi in cui un adattatore può mostrare come “connesso a internet” quando non lo è. Al contrario, è ansible che “non sia connesso a Internet” e sia ancora connesso.

Come molte cose nella vita, “La prova del budino è nel mangiare” Se vuoi sapere se sei connesso, devi provare a parlare con qualcosa.

Mi piace time.gov dal momento che restituisce una piccola porzione di XML contenente l’ora corrente in modo da poter verificare che ci si stia effettivamente connettendo alla rete e non ottenere una sorta di dati memorizzati nella cache o un reindirizzamento a un captive portal.

Basta scorrere gli adattatori e vedere quale ha effettivamente la connettività.