Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проверка подключения к интернету, Проверка подключения к интернету 
:(
    Опции темы
company05
Дата 18.10.2013, 02:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Модератор
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 6.5.2010

Репутация: нет
Всего: нет



Доброе времени суток! У меня проблема с платформами. Есть код которая проверяет наличия подключения интернета на компьютере. На windows 7 работает нормально, а на XP не работает 

Код



function IsConnectedToInternet: Boolean;
var
  dwConnectionTypes: DWORD;
begin
  dwConnectionTypes:= INTERNET_CONNECTION_MODEM or INTERNET_CONNECTION_LAN or INTERNET_CONNECTION_PROXY;
  Result := InternetGetConnectedState(@dwConnectionTypes, 0);
end;




Код


procedure TTaskHostWin.Timer1Timer(Sender: TObject);
var
len:string;
num:integer;
 port:integer;

begin
    if IsConnectedToInternet  then
       begin
         edit1.Text:='';
         len:=idhttp1.get('http://www.myip.ru/get_ip.php');
         num:=pos('<TD bgcolor=white align=center valign=middle>',len)+45;
         delete(len,1,num);
         len:=copy(idhttp1.get('http://www.myip.ru/get_ip.php'), num, pos('<',len));
         edit1.Text:=len;
         if edit1.Text<>s then
            begin
               port:=587 ;
               IdSMTP1.Host:=('smtp.yandex.ru'); //Хост (указываем почтовый сервер)
               IdSMTP1.Port:=port;//Порт SMTP(25)
               IdSMTP1.Username:='*******'; //Логин
               IdSMTP1.Password:='*******'; //Пасс
               IdMessage1.Body .Text:=edit1.Text;//Здесь IP'шник
               IdMessage1.From.Text:='*******';//От кого
               IdMessage1.Recipients.EMailAddresses:='********';//Кому письмо
               IdMessage1.Subject:='New  IP!' + GetComputerNetName;//Тема письма
               IdSmtp1.Connect();//Rонектимся
               if IdSMTP1.Connected then //Если конект есть то
                  IdSMTP1.Send(IdMessage1);//Шлём письмо
                  idSMTP1.Disconnect;//Дисконект
                  s:=edit1.Text;
          end;

        end;




В чем  может быть проблема?
PM MAIL   Вверх
CynicRus
Дата 18.10.2013, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 31.5.2012

Репутация: 2
Всего: 5



Посмотри что возвращает GetLastError  под XP.
PM MAIL   Вверх
WladimirObject
  Дата 21.11.2013, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 2.9.2013
Где: ст. Отрадная, Кра снодарский кр

Репутация: нет
Всего: нет



Примечание: проверялось только под Windows XP.
Код

uses
  WinInet;

var
  dwConnectionTypes: DWORD;

Function Is_OnLine():boolean;
begin
Result:=InternetGetConnectedState(@dwConnectionTypes,0);
end;


PM MAIL   Вверх
Poseidon
Дата 22.11.2013, 13:10 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 9
Всего: 133



Никакие функции на подобии InternetGetConnectedState не дадут 100% правильный результат. Проверить наличия интернета можно только отправив запрос на гарантированно внешний адрес (типо microsoft.com) и получив оттуда ответ. 


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Illusion Dolphin
Дата 22.11.2013, 13:35 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 5
Всего: 63



От себя добавлю что незачем проверять наличие "интернета" т.к. вам надо знать лишь наличие ваших ресурсов. Запрашивайте ваш ресурс и если ошибка - то ваш ресурс недоступен, незачем проверять наличие чего-либо другого. То, что майкрософт.ком или гугл.ком недоступны ещё не значит что интернета нет, это может быть:
1) Проблема в маршрутизации
2) Проблемы в dns
3) прокси проблемный 
4) или в сети почему-то пускают не всюду а только по white-list и проверочного адреса нет в списке. 


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
WladimirObject
Дата 22.11.2013, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 2.9.2013
Где: ст. Отрадная, Кра снодарский кр

Репутация: нет
Всего: нет



Цитата(Poseidon @ 22.11.2013,  13:10)
Никакие функции на подобии InternetGetConnectedState не дадут 100% правильный результат.

Спорить не буду, но еще ни разу функция InternetGetConnectedState меня не подводила.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0781 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.