Страница 1 из 1

Как диагностировать наличие Инета

Добавлено: 28 Декабрь 2010, 11:25
dik1970
В задаче на С6.3 реализована отправка сообщения на конкретный e-mail с использованием Blat_Send.
Вопрос, как проще диагностировать перед отправкой наличие действующего подключения к интернету,
чтобы не просто получить ошибку отправки, а сообщить клиенту ( ну вот такой контингент), что
неплохо бы было подключиться к сети.
Первая мысль отправить ping на известный адрес.

Re: Как диагностировать наличие Инета

Добавлено: 28 Декабрь 2010, 13:03
Admin
Вторая: получить файл по известному адресу.

Re: Как диагностировать наличие Инета

Добавлено: 28 Декабрь 2010, 14:07
Дед Пахом
Третья: послать клиента по известному адресу.

Re: Как диагностировать наличие Инета

Добавлено: 28 Декабрь 2010, 18:40
dik1970
Может я не по русски объясняю, не знаю конечно.
Какой файл получить???
Прога стоит у клиентов, и отправляют сообщения тоже они - мне. Их много и почти все владеют компьютером на начальном уровне.
Поэтому в тех случаях, когда инет на машине просто выключен, надо так прямо им об этом сообщать. Иначе будут звонить и
спрашивать и весь смысл затеи теряется.
Blat_send выдает, конечно коды ошибок, но там на один код несколько разных вариантов ошибки.

Re: Как диагностировать наличие Инета

Добавлено: 28 Декабрь 2010, 21:22
Дед Пахом
Отключите интернет и попробуйте зайти на какой-нибудь сайт, IE вам посоветует сперва проверить правильность введённого url. Так что я бы на Вашем месте не парился и при получении любой ошибки от Blat_send выводил окошко с текстом, первой строкой которой красным цветом жирно и крупно написал "Сперва убедитесь в наличии соединения", а потом другие возможные причины ошибки.

Re: Как диагностировать наличие Инета

Добавлено: 28 Декабрь 2010, 22:30
dik1970
Спасибо, скорее всего так и поступлю

Re: Как диагностировать наличие Инета

Добавлено: 29 Декабрь 2010, 13:42
AlexPet
За это отвечает ф-ии InternetGetConnectedState() из wininet.dll или InetIsOffLine() из url.dll

Re: Как диагностировать наличие Инета

Добавлено: 30 Декабрь 2010, 9:04
Игорь Столяров
Здесь нужно определится, что Вам нужно: наличие Internet (трансляции IP пакетов) как таковое или возможность отправить сообщение.
Как говорят в Одессе "это две большие разницы". Например у меня в локальной сети предприятия настроен собственный Intranet и свой почтовый сервер.
При этом то, что Вы называете "Internet" в этой сети нет, а вот почтовый сервер (SMTP / POP3 . IMAP ) работает прекрасно из всех программ ...

Вам нужно просто проверять наличие доступа к ресурсу к которому Вы обращаетсь для передачи сообщения (почтовому серверу).
Это можно сделать либо через PING, либо если хочется красиво - то через функции Catalyst SocketTools или WinAPI.
Если совсем все плохо - то на крайний случай просто тупо отрабатывать наличие ошибки по факту передачи сообщения (как это уже рекомендовали ниже).