Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ] > Код на шару!
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.11.2016, 10:09
DarkMoth DarkMoth вне форума
Прохожий
 
Регистрация: 06.11.2016
Сообщения: 22
Версия Delphi: 10.1 Berlin
Репутация: 10
По умолчанию Чекнуть соединение с интернетом

Собственно задача в том, что бы проверить, есть ли связь с интернетом на мобильном устройстве. Судя по форумам, проблема актуальная.

Ping чего-либо не вариант. Попробовать с чем-то соединиться в прицепе заканчивается фатальной ошибкой.

Скорее всего я не знаю какой-нибудь хитрой функции какого-нибудь компонента (ftp, http, icmp результатов не дали)
Вот прям код не прошу, хотя бы подскажите где копать.

Да, если есть знатоки работы с API (iOS, Android). Это тоже вариант, но сам с API никогда не работал.
Ответить с цитированием
  #2  
Старый 18.11.2016, 11:34
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

В первый раз слышу что это актуальная проблема даже на мобильных устройствах в настоящее время. Просто постоянно им пользуюсь последние года два. Но если все-таки нужно, то можно пойти по пути Microsoft: делать запрос на их сервер. Как это сделать было на форуме. Мне сейчас с iPhone искать несподручно
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 18.11.2016, 13:42
DarkMoth DarkMoth вне форума
Прохожий
 
Регистрация: 06.11.2016
Сообщения: 22
Версия Delphi: 10.1 Berlin
Репутация: 10
По умолчанию

Речь идёт о POST/GET запросе через http?

Последний раз редактировалось DarkMoth, 18.11.2016 в 13:53.
Ответить с цитированием
  #4  
Старый 18.11.2016, 14:08
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Да, самый достоверный способ проверить работу интернета это сделать запрос GET/POST на заведомо работающий сервер, не принадлежащий провайдеру.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 18.11.2016, 19:46
DarkMoth DarkMoth вне форума
Прохожий
 
Регистрация: 06.11.2016
Сообщения: 22
Версия Delphi: 10.1 Berlin
Репутация: 10
По умолчанию

Не выходит
мобилка всё равно вылетает.

Напишите пожалуйста код для get запрса который чекает соединение с интернетом.


Сейчас это выглядит так
Код:
procedure Form.Button1Click(Sender: TObject);
begin
 try
 memo2.Text := idhttp.Get('http://google.com');
 servstat.FontColor := TAlphaColorRec.green;
 except
 servstat.FontColor := TAlphaColorRec.Red
 end;
 idHttp.Free;
 end;
Ответить с цитированием
  #6  
Старый 19.11.2016, 01:57
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Как навязывают проверять в майкрософт (для D7)
Код:
function Form.IsConnect: boolean;
var
 http: TIdHTTP;
begin
 http:= TIdHTTP.Create(Self);
 try
  http.Get('http://www.msftncsi.com/ncsi.txt');
  if http.ResponseCode = 200 then 
   Result:= true;
 except
  Result:= false;
  end;
 http.Free;
end;
под виндой работает без ошипок
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
DarkMoth (19.11.2016)
  #7  
Старый 19.11.2016, 13:39
DarkMoth DarkMoth вне форума
Прохожий
 
Регистрация: 06.11.2016
Сообщения: 22
Версия Delphi: 10.1 Berlin
Репутация: 10
По умолчанию

Что-то мне мозгов не хватает как это именно функцией вставить и что-то делать по результату.
В виде процедуры, всё так же выкидывает мобилку(
Ответить с цитированием
  #8  
Старый 19.11.2016, 14:32
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Второй этап проверки работы интернет - проверка работоспособности DNS.
Для этого можно попытаться определить IP-адрес хоста dns.msftncsi.com. Значение должно быть 131.107.255.255.
Примерно так:
Код:
uses
  WinSock,

function dns_msftncsi_com: Boolean;
var
  WSAData: TWSAData;
  HostEnt: PHostEnt;
begin
  WSAStartup(MakeWord(2, 2), WSAData);
  HostEnt:=gethostbyname('dns.msftncsi.com');
  Result:=(HostEnt<>nil) and (inet_ntoa(PInAddr(HostEnt^.h_addr_list^)^)='131.107.255.255');
  WSACleanup;
end;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #9  
Старый 19.11.2016, 16:01
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Под андроид есть свой класс TCustomNetworkState с набором функций типа GetSSID, IsConnecte, IsWifiConnected и IsMobileConnected
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:35.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter