2010-10-13 3 views
4

Мне нужен способ программно определить доступность Интернета. Теперь я использую Ping для постоянного прослушивания какого-либо интернет-сайта.Как определить, подключен ли сетевой интерфейс к Интернету (то есть компьютер в сети)

Но, похоже, Windows 7 хотя и определяет доступность Интернета каким-либо другим способом. Если компьютер находится в режиме онлайн, значок сетевого значка отображается на значке сетевого интерфейса в системном трее.

Вопрос: есть ли стандартный способ Win32 для проверки статуса онлайн, выиграть событие или что-то в этом роде, и если да, то как использовать его с C#?

+0

Что вы собираетесь делать с этой информацией? Так как интернет-соединение может опуститься в любой момент, вам все равно необходимо запрограммировать защиту против этого. –

+0

У меня есть код, который повторяет LAN-интерфейс. – skaeff

+0

Он отключает интерфейс LAN через WMI, а затем снова включает - когда есть проблемы со стороны провайдера, это помогает. Я также планирую установить WiMax или GSM-модем, потому что очень важно, чтобы мое приложение было подключено :) – skaeff

ответ

4

Я считаю, что-то, как это будет работать, хотя ваш вопрос, кажется, дубликат:

using System; 
using System.Runtime; 
using System.Runtime.InteropServices; 

public class InternetCS 
{ 
    //Creating the extern function... 
    [DllImport("wininet.dll")] 
    private extern static bool InternetGetConnectedState(out int Description, int ReservedValue); 

    //Creating a function that uses the API function... 
    public static bool IsConnectedToInternet() 
    { 
     int Desc ; 
     return InternetGetConnectedState(out Desc, 0) ; 
    } 
} 

forund здесь:

check whether Internet connection is available with C#

2

«Подключение к Интернету» не имеет какого-либо фактическое значение, за исключением случая модема. Способ использования, чтобы проверить, доступен ли какой-либо ресурс, - использовать его. В любом случае вы должны справляться с неудачами, не нужно котировать все дважды.

+0

Ну, это уже сделано. Каждые 3 секунды я отправляю ping на общедоступный общедоступный хост, и если я не сработаю не менее 10 циклов - я перезагружаю сетевой интерфейс. – skaeff