Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2014, 20:54   #1
HTTqp
Форумчанин
 
Регистрация: 20.12.2013
Сообщений: 164
По умолчанию Проверка интеренет соединения

проверяю интерет соединения т.е. есть оно или нет. Вот как я это осуществляю:

Код:
const  
 INTERNET_CONNECTION_MODEM      = 1;  
 INTERNET_CONNECTION_LAN        = 2;  
 INTERNET_CONNECTION_PROXY      = 4;  
 INTERNET_CONNECTION_MODEM_BUSY = 8;

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

procedure TForm1.Button1Click(Sender: TObject);
begin
if IsInternetConnected then  Label1.Caption:='1' else Label1.Caption:='0';
end;
но уменя всегда получается так как будто соединение все есть, вне зависимости от того включу я инет или нет. Интересует проверка через api без использования так сказать проверки в виде
Код:
HTTP.Get('http://ya.ru');
даже не интересует.
HTTqp вне форума Ответить с цитированием
Старый 05.10.2014, 21:16   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
даже не интересует.
Ну удачи вам тогда.

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

Ломитесь в инет, если ответ есть удаленного сервера пришел - вы в интернете, если не пришёл - вы не в интернете. Иных способов просто не существует.
Человек_Борща вне форума Ответить с цитированием
Старый 05.10.2014, 21:36   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
даже не интересует.
Если не интересует такое то просто пропингуй гугл или яндекс.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.10.2014, 22:53   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Давно пора написать компонент-наследник TTimer:
Код:
type 
  TPingYaRu = class(TTimer)
    //....
    property OnLine: Boolean read ... ;  

    property OnInternetConnect: TNotifyEvent...;
    property OnInternetKirdyk: TNotifyEvent ...;
  end;
Всё руки не дойдут никак...
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 05.10.2014 в 22:58.
min@y™ вне форума Ответить с цитированием
Старый 06.10.2014, 09:26   #5
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,451
По умолчанию

я так проверял:

Код:
uses WinInet;

 function TForm1.GetOnlineStatus: Boolean;
var
  Types: Integer;
begin
  Types := INTERNET_CONNECTION_MODEM +
  INTERNET_CONNECTION_LAN + INTERNET_CONNECTION_PROXY;
  Result := InternetGetConnectedState(@Types, 0);
end;
beegl вне форума Ответить с цитированием
Старый 06.10.2014, 10:02   #6
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
я так проверял
А если подключение есть, но это просто локальная сеть, то что выдаст твой метод?
Изображения
Тип файла: png _screen.png (2.4 Кб, 84 просмотров)
Тип файла: png 24.png (3.9 Кб, 82 просмотров)
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 06.10.2014 в 10:04.
min@y™ вне форума Ответить с цитированием
Старый 06.10.2014, 12:52   #7
indexx
Заблокирован
 
Регистрация: 12.09.2014
Сообщений: 544
По умолчанию

Ну так может и спросить тип доступа у win?
indexx вне форума Ответить с цитированием
Старый 06.10.2014, 14:49   #8
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Ну так может и спросить тип доступа у win?
Ну если контингент у вас чисто Win 8+ то проблем не будет. Да и фиг его знает, что винда там проверяет.

У меня нет интернета, а соединение все равно не ограничено и работает.

Решение все равно одно: стучаться к внешнему ресурсу, который 100% вне сети провайдера.
Человек_Борща вне форума Ответить с цитированием
Старый 06.10.2014, 15:28   #9
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
стучаться к внешнему ресурсу, который 100% вне сети провайдера
Ну да. Могу предложить:
Код:
type
  TDnsLookupDone = procedure (Sender: TObject; Error: Word) of object;
  TPingDisplay   = procedure(Sender: TObject; Icmp: TObject; Msg : String) of object;
  TPingReply     = procedure(Sender: TObject; Icmp: TObject; Status : Integer) of object;
  TPingRequest   = procedure(Sender: TObject; Icmp: TObject) of object;
  TPing = class(TComponent)
  private
    FIcmp             : TICMP;
    FWindowHandle     : HWND;
    FDnsLookupBuffer  : array [0..MAXGETHOSTSTRUCT] of char;
    FDnsLookupHandle  : THandle;
    FDnsResult        : String;
    FOnDnsLookupDone  : TDnsLookupDone;
    FOnEchoRequest    : TPingRequest;
    FOnEchoReply      : TPingReply;
    FOnDisplay        : TPingDisplay;
  protected
    procedure   WndProc(var MsgRec: TMessage);
    procedure   WMAsyncGetHostByName(var msg: TMessage); message WM_ASYNCGETHOSTBYNAME;
    procedure   SetAddress(Value : String);
    function    GetAddress : String;
    procedure   SetSize(Value : Integer);
    function    GetSize : Integer;
    procedure   SetTimeout(Value : Integer);
    function    GetTimeout : Integer;
    function    GetReply : TIcmpEchoReply;
    function    GetErrorCode : Integer;
    function    GetErrorString : String;
    function    GetHostName : String;
    function    GetHostIP : String;
    procedure   SetTTL(Value : Integer);
    function    GetTTL : Integer;
    procedure   Setflags(Value : Integer);
    function    Getflags : Integer;
    function    GetICMPHandle : HModule;
//    procedure   SetOnDisplay(Value : TICMPDisplay);
//    function    GetOnDisplay : TICMPDisplay;
//    procedure   SetOnEchoRequest(Value : TNotifyEvent);
//    function    GetOnEchoRequest : TNotifyEvent;
//    procedure   SetOnEchoReply(Value : TICMPReply);
//    function    GetOnEchoReply : TICMPReply;
    procedure   IcmpEchoReply(Sender: TObject; Error : Integer);
    procedure   IcmpEchoRequest(Sender: TObject);
    procedure   IcmpDisplay(Sender: TObject; Msg: String);
  public
    constructor Create(Owner : TComponent); override;
    destructor  Destroy; override;
    function    Ping : Integer; virtual;
    procedure   DnsLookup(HostName : String); virtual;
    procedure   CancelDnsLookup;

    property    Reply         : TIcmpEchoReply read GetReply;
    property    ErrorCode     : Integer        read GetErrorCode;
    property    ErrorString   : String         read GetErrorString;
    property    HostName      : String         read GetHostName;
    property    HostIP        : String         read GetHostIP;
    property    Handle        : HWND           read FWindowHandle;
    property    DnsResult     : String         read FDnsResult;
    property    ICMPDLLHandle : HModule        read GetICMPHandle;
  published
    property    Address     : String         read  GetAddress
                                             write SetAddress;
    property    Size        : Integer        read  GetSize
                                             write SetSize;
    property    Timeout     : Integer        read  GetTimeout
                                             write SetTimeout;
    property    TTL         : Integer        read  GetTTL
                                             write SetTTL;
    property    Flags       : Integer        read  Getflags
                                             write SetFlags;
    property    OnDisplay   : TPingDisplay   read  FOnDisplay
                                             write FOnDisplay;
    property    OnEchoRequest : TPingRequest read  FOnEchoRequest
                                             write FOnEchoRequest;
    property    OnEchoReply   : TPingReply   read  FOnEchoReply
                                             write FOnEchoReply;
    property    OnDnsLookupDone : TDnsLookupDone
                                             read  FOnDnsLookupDone
                                             write FOnDnsLookupDone;
  end;
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка соединения с бд interbase vbn1 БД в Delphi 14 02.06.2014 14:29
Проверка соединения с интернетом 2. ZeitGeist7 Работа с сетью в Delphi 5 02.02.2012 14:59
Проверка интернет-соединения Mandrivnyk Общие вопросы C/C++ 1 05.05.2011 12:32
проверка соединения с Интернет KWNlnc Работа с сетью в Delphi 0 26.03.2010 06:23