$Yastrebov$ писал(а):2GSerg курс лечения прошел;) но суть моего вопроса как раз состояла не в том, как проверить подключение к Интернету, а проверить открыт ли 25 порт, что не одно и тоже!
Если ты всё-таки думаешь, что не одно и тоже, то курс лечения надо повторить.
Там ясно написано - попытка сделать задуманное и отлов ошибки - единственно верный способ.
$Yastrebov$ писал(а):2GSerg Увы многие пользователи не желают читать документацию и на то их воля!
Значит, они прочитают её, когда файрвол их спросит, что делать с программой. Если файрвол молча заблокирует, программа не сработает, и тогда снова будет вопрос. Поэтому хорошо бы завести FAQ с первым пунктом "Почему отправка не происходит?".
$Yastrebov$ писал(а):Если закрыт 25, можно на 80, организовав на своём сервере приём POST-запроса HTTP с описанием проблемы.
Отправка POST-запроса описана в FAQ.
2GSerg с этим обязательно ознакомлюсь!
Что, однако, ни в коей мере не гарантирует успеха, а запросто приведёт ровно к тем же проблемам, что с портом 25.
$Yastrebov$ писал(а):2jangle
У меня фактически так все и реализовано, но этот простой...
Я отлавливаю "паузу" Winsock, но часто простой задерживается на длительный период до того, как я получаю Winsock.Error и грозный пользователь недоумивает! Есть ли другие пути? Более быстрая реакция? Существуют ведь СКАНЕРЫ ПОРТОВ. Увы с закрытым кодом.
Если ты ещё и сканер портов поставишь, то (с учётом наличия контактной инфы в твоей проге) к тебе запросто очень быстро придут уполномоченные товарищи.
Если файрвол блокирует запрос, винсок обламывается практически мгновенно.
Если винсок тупит, дело не в файрволе, а в программе, которая что-то делает неправильно.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас