проверьте, доступно ли интернет-соединение с C #

В Java все находится в форме класса.

Если вы хотите использовать любой объект, тогда у вас есть две фазы:

  1. Объявить
  2. Инициализация

Пример:

  • Объявление: Object a;
  • Инициализация: a=new Object();

То же самое для концепции массива

  • Объявление: Item i[]=new Item[5];
  • Инициализация: i[0]=new Item();

Если вы не дают секцию инициализации, тогда возникает NullpointerException.

25
задан Prof. Falken 20 August 2012 в 14:19
поделиться

5 ответов

Здесь - это API Windows, который вы можете использовать. Он находится в wininet.dll и называется InternetGetConnectedState .

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 ) ;
    }
}
21
ответ дан 28 November 2019 в 20:33
поделиться

Самый простой способ - это, вероятно, проверить, могут ли они загрузить файл из Интернета, который, как вы знаете, доступен. Используйте следующий код для загрузки домашней страницы Google.

WebClient Client = new WebClient ();
String Response;
Response = Client.DownloadString("http://www.google.com");

Вам, вероятно, следует заключить это в Try .... Catch, чтобы перехватить исключение, которое выдается, когда не удается установить соединение.

4
ответ дан 28 November 2019 в 20:33
поделиться

Вы можете проверить сетевое соединение, используя это в .NET 2.0+

System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable();

Это, вероятно, просто вернет true для локальных сетей, поэтому это может не сработать для вас .

7
ответ дан 28 November 2019 в 20:33
поделиться

Это вопрос, на который на самом деле ответ "зависит от обстоятельств". Потому что это зависит от того, почему вы хотите проверить и какое соединение? Вы хотите иметь доступ к определенным веб-сайтам / службам через http? Отправить smtp почту? Выполняется ли поиск DNS?

Возможно, лучше использовать комбинацию предыдущих ответов - сначала используйте wininet api из ответа colithium, чтобы проверить, доступно ли какое-либо соединение.

Если да, попробуйте пару запросов DNS (см. System.Net.Dns) для интересующих вас ресурсов или некоторых популярных крупных веб-сайтов (google, altavista, compuserve и т. д.).

Затем вы можете попробовать выполнить ping (см. Roger Willcocks) и / или установление сокетного соединения с теми же сайтами. Обратите внимание, что неудачный ping может просто означать, что правила брандмауэра не позволяют вам ping.

6
ответ дан 28 November 2019 в 20:33
поделиться

Есть и другие варианты.

Библиотека InfoPath предоставляет доступ к "IsDestinationReachable" , который является оболочкой для одноименного метода Win API. (Похоже, Vista не поддерживает это)

Однако, судя по документации, это зависит от чего-то вроде PING, так что это не обязательно хороший тест.

Vista + скажем, используйте "Диспетчер списков сетей "

@colithium Google может не работать, но что-то может также выйти из строя, если интервал блокировки DNS превышает таймаут. Нередко здесь, в Новой Зеландии, первая попытка не удалась, вторая - удалась, потому что к моменту выполнения второго запроса данные уже распространились обратно в DNS поставщика услуг Интернета или в кэш вашего маршрутизатора.

0
ответ дан 28 November 2019 в 20:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: