Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/106: Рейтинг темы: голосов - 106, средняя оценка - 4.84
55 / 44 / 5
Регистрация: 29.07.2009
Сообщений: 159
1

Проверить подключен ли интернет

06.12.2010, 15:53. Показов 20473. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Необходимо проверить есть ли соединение с интернетом. Пробовал использовать ping, но при отсуствии подключения вываливается ошибка.
Код такой:
C#
1
2
3
4
5
6
7
8
9
10
11
                Ping p = new Ping();
            PingReply pr = p.Send(@"server.ru");
            IPStatus status = pr.Status; 
            if (Convert.ToString(status) == "Success")
                {
                MessageBox.Show("Сервер работает");
                }
            else
                {
                MessageBox.Show("Сервер временно недоступен!");
                }
Заранее спасибо.
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.12.2010, 15:53
Ответы с готовыми решениями:

Проверить подключен ли сокет
Здравствуйте! Подскажите, как проверить, подключено ли еще приложение на другой стороне к сокету?...

Проверить, подключен ли сетевой диск
проверить подключен ли сетевой диск, (\\server\serv) на диске (K: ), если подключен, то выдать...

Проверить, подключен ли интернет, если выдернут шнур из роутера
то есть в этом случае нужно отправить http запрос на сервер провайдера или как в этом случае...

Интернет подключен, но выхода в интернет нет
Собственно на скрине всё видно. Интернет есть, но ни одна программа не подключается к нему - ни...

8
Почетный модератор
Эксперт .NET
8722 / 3674 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
06.12.2010, 16:28 2
Лучший ответ Сообщение было отмечено как решение

Решение

Попробуй так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
IPStatus status;
try{
                Ping p = new Ping();
            PingReply pr = p.Send(@"server.ru");
            status = pr.Status;
}catch{ }
            if (status = IPStatus.Success)
                {
                MessageBox.Show("Сервер работает");
                }
            else
                {
                MessageBox.Show("Сервер временно недоступен!");
                }
Также можно с помощью API
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System.Runtime.InteropServices;
...
        [DllImport("Wininet.dll", SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        private static extern bool InternetGetConnectedState ( out INET_CONNECTION_STATE lpdwFlags, uint dwReserved );
 
        [Flags]
        enum INET_CONNECTION_STATE : uint
        {
            INTERNET_CONNECTION_CONFIGURED = 0x40,
            INTERNET_CONNECTION_LAN = 0x02,
            INTERNET_CONNECTION_MODEM = 0x01,
            INTERNET_CONNECTION_MODEM_BUSY = 0x08,
            INTERNET_CONNECTION_OFFLINE = 0x20,
            INTERNET_CONNECTION_PROXY = 0x04,
            INTERNET_RAS_INSTALLED = 0x10
        }
...
            INET_CONNECTION_STATE flags;
            if (InternetGetConnectedState(out flags, 0U) && (flags & INET_CONNECTION_STATE.INTERNET_CONNECTION_CONFIGURED) == INET_CONNECTION_STATE.INTERNET_CONNECTION_CONFIGURED) {
                MessageBox.Show("Состояние: " + flags);
            } else
                MessageBox.Show("Интернет не подключён!");
Добавлено через 10 минут
должно быть
C#
1
if (status == IPStatus.Success)
Описался

Также проверить можно с помощью InternetCheckConnection.
9
55 / 44 / 5
Регистрация: 29.07.2009
Сообщений: 159
06.12.2010, 17:21  [ТС] 3
При использовании первого способа компилятор выдаёт следующую ошибку:
Использование локальной переменной "status", которой не присвоено значение
0
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
06.12.2010, 18:18 4
Цитата Сообщение от Oxygen Посмотреть сообщение
При использовании первого способа компилятор выдаёт следующую ошибку:
Использование локальной переменной "status", которой не присвоено значение
Я думаю проблема в ДНК, возможно в следующей жизни повезет больше
3
55 / 44 / 5
Регистрация: 29.07.2009
Сообщений: 159
06.12.2010, 19:16  [ТС] 5
Я не спрашивал где ошибка, я лишь сообщил о ней, а потому баянистые шутки про ДНК неуместны.
В принципе и второй код замечательно работает, думаю им и воспользуюсь. За сим разрешите откланятся, вопрос закрыт.
0
Почетный модератор
Эксперт .NET
8722 / 3674 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
06.12.2010, 20:04 6
Лучший ответ Сообщение было отмечено как решение

Решение

Для истории, вдруг у кого возникнут проблемы с API:
C#
1
2
3
4
5
6
7
8
9
10
            IPStatus status = IPStatus.Unknown;
            try {
                status = new Ping().Send("server.ru").Status;
            } catch { }
 
            if (status == IPStatus.Success) {
                MessageBox.Show("Сервер работает");
            } else {
                MessageBox.Show("Сервер временно недоступен!");
            }
10
мну довольно <(-__-)l
217 / 206 / 15
Регистрация: 17.01.2010
Сообщений: 2,462
06.12.2010, 20:28 7
Цитата Сообщение от m0nax Посмотреть сообщение
Я думаю проблема в ДНК, возможно в следующей жизни повезет больше
а ты не заметил что присвоение значения переменной проходит внутри конструкции try{}catch{}?
если уж заметил, то смеяться над тем кто не заметил, думаю, не стоит...
1
2 / 2 / 0
Регистрация: 10.04.2011
Сообщений: 185
11.06.2011, 23:55 8
А если компьютер выходит в Интернет через прокси-сервер (к примеру 1.0.0.99:3128), то как в этом случаем проверить подключение?
0
0 / 0 / 0
Регистрация: 20.03.2015
Сообщений: 35
26.09.2015, 17:50 9
В общем можно решить проблему вот так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
            IPStatus status = IPStatus.TimedOut;
            try
            {
                
                Ping ping = new Ping();
                PingReply reply = ping.Send(@"vk.com");
                status = reply.Status;
            }
            catch { }
            if (status != IPStatus.Success)
            {
                MessageBox.Show("Сервер временно недоступен!");
 
            }
            else
            {
                MessageBox.Show("Сервер  работает");
            }
Надо просто заранее присвоить объекту IPStatus "плохое" значение (ошибку с интернет соединением, я выбрал TimesOut) и все
0
26.09.2015, 17:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.09.2015, 17:50
Помогаю со студенческими работами здесь

Как раздать интернет по wi-fi через ноутбук, если интернет к нему подключен через wi-fi?
Значит так, есть 3 ноутбука с Wi-fi. Я хочу с одного ноута раздавать инетернет другим ноутам. Но...

Подключен ли интернет?
Всем привет! Возникла необходимость проверять, есть ли интернет подключение или нет. Код вот...

Интернет подключен, но не работает
всем доброго времени суток! помогите пожалуйста, переустановил официальную windows 7, перестал...

WI fi подключен но интернет не работает
Всем привет!!...пожалуйста подскажите плз...у меня на нотбуке Wi FI не работает но показывает все...

интернет подключен но браузера не открываеються
заходить только на сапорт хрома!

Javafx проверка подключен ли интернет
Салют! Хочу в приложении проверить подключен ли интернет, если в определенный момент пропал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru