Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];

Вниз

"ТИХАЯ" проверка коннекта   Найти похожие ветки 

 
maxistent ©   (2004-09-16 11:05) [0]

Дарова, человеки!!! Буду чрезмерно рад, если Вы поможете с вопросом: как можно "ТИХО" (без лишнего шума и пыли) проверить коннект с ИНЕТОМ? Т.е. прога не должна задавать НИКАКИХ вопросов! Просто проверить - есть коннект, значит есть, нет - значит нет. ???


 
Digitman ©   (2004-09-16 13:50) [1]


> коннект с ИНЕТОМ


коннекта с "ИНЕТОМ" быть не может потому что его не может быть по определению


 
maxistent ©   (2004-09-17 20:24) [2]

Смешно! Ладно, расслабьтесь. Я уже нашел ответ. Вродь подходит...


 
Verg ©   (2004-09-17 20:43) [3]


> расслабьтесь


:)))


 
Anatoly Podgoretsky ©   (2004-09-19 11:57) [4]

maxistent ©   (17.09.04 20:24) [2]
Врешь


 
RaPToR_1   (2004-09-19 21:46) [5]

Удалено модератором
Примечание: Оффтоп...


 
Digitman ©   (2004-09-20 10:47) [6]


> maxistent ©   (17.09.04 20:24) [2]
> Смешно! ... Я уже нашел ответ


смешно, что ты нашел ответ, которого быть не может в принципе
Интернет - это сеть сетей, с сетью коннекта не может быть, коннект устанавливается с КОНКРЕТНЫМ компьютером в той или иной сети, например, с компьютером, выполняющим поль сервера удал.доступа в сети провайдера

и установка коннекта твоего компьютера с компьютером-сервером доступа провайдера отнюдь не означает, что твой компьютер имеет "коннект с ИНЕТ"


 
Samowar ©   (2004-09-21 03:38) [7]

> выполняющим поль сервера удал.доступа

Про какую ПОЛЬ ты говориш? Если ты имел ввиду моль, то она живёт в твоём шкафу и уже доедает твою шубу и ничего общего с коннектом не имеет.

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

Часто приложению, которое работает в интернете, требуется знать, подключён пользователь к интернету или нет. Предлагаю Вам довольно гибкое решение этого вопроса.

Совместимость: Delphi 3.x (или выше)

Для работы Вам необходимо импортировать функцию InetIsOffline из URL.DLL:

function InetIsOffline(Flag: Integer): Boolean; stdcall; external "URL.DLL";

а затем поместить в программу простой вызов функции для проверки статуса соединения:

if InetIsOffline(0) then
ShowMessage("This computer is not connected to Internet!")
else
ShowMessage(You are connected to Internet!");

Эта функция возвращает TRUE если соединение с интернетов отсутствует, или FALSE если соединение установлено.

Замечание:
параметр Flag игнорируется, соответственно используем ноль.
Эта DLL обычно проинсталлирована на большинстве компьютеров. Она также существует в Win98 либо поставляется с Internet Explorer 4 или выше, Office 97 и т.д..
Более подробно можно прочитать в MSDN. Оригинал: http://msdn.microsoft.com/library/psdk/shellcc/shell/Functions/InetIsOffline.htm

Автор ответа: Vitaly Zayko
Взято с Исходников.ru http://www.sources.ru/delphi_src1.shtml

----------------------------------------------------------------

interface  

uses  
 Windows, SysUtils, Registry, WinSock, WinInet;  

type  
 TConnectionType = (ctNone, ctProxy, ctDialup);  

function ConnectedToInternet: TConnectionType;  
function RasConnectionCount: Integer;  

implementation  

//For RasConnectionCount =======================  
const  
 cERROR_BUFFER_TOO_SMALL = 603;  
 cRAS_MaxEntryName       = 256;  
 cRAS_MaxDeviceName      = 128;  
 cRAS_MaxDeviceType      = 16;  
type  
 ERasError = class(Exception);  

 HRASConn = DWORD;  
 PRASConn = ^TRASConn;  
 TRASConn = record  
   dwSize: DWORD;  
   rasConn: HRASConn;  
   szEntryName: array[0..cRAS_MaxEntryName] of Char;  
   szDeviceType: array[0..cRAS_MaxDeviceType] of Char;  
   szDeviceName: array [0..cRAS_MaxDeviceName] of Char;  
 end;  

 TRasEnumConnections =  
   function(RASConn: PrasConn; { buffer to receive Connections data }  
   var BufSize: DWORD;    { size in bytes of buffer }  
   var Connections: DWORD { number of Connections written to buffer }  
   ): Longint;  
 stdcall;  
 //End RasConnectionCount =======================  

function ConnectedToInternet: TConnectionType;  
var  
 Reg:       TRegistry;  
 bUseProxy: Boolean;  
 UseProxy:  LongWord;  
begin  
 Result := ctNone;  
 Reg    := TRegistry.Create;  
 with REG do  
   try  
     try  
       RootKey := HKEY_CURRENT_USER;  
       if OpenKey("\Software\Microsoft\Windows\CurrentVersion\Internet settings", False) then  
       begin  
         //I just try to read it, and trap an exception  
         if GetDataType("ProxyEnable") = rdBinary then  
           ReadBinaryData("ProxyEnable", UseProxy, SizeOf(Longword))  
         else  
         begin  
           bUseProxy := ReadBool("ProxyEnable");  
           if bUseProxy then  
             UseProxy := 1  
           else  
             UseProxy := 0;  
         end;  
         if (UseProxy <> 0) and (ReadString("ProxyServer") <> "") then  
           Result := ctProxy;  
       end;  
     except  
       //Obviously not connected through a proxy  
     end;  
   finally  
     Free;  
   end;  

 //We can check RasConnectionCount even if dialup networking is not installed  
 //simply because it will return 0 if the DLL is not found.  
 if Result = ctNone then  
 begin  
   if RasConnectionCount > 0 then Result := ctDialup;  
 end;  
end;  

function RasConnectionCount: Integer;  
var  
 RasDLL:    HInst;  
 Conns:     array[1..4] of TRasConn;  
 RasEnums:  TRasEnumConnections;  
 BufSize:   DWORD;  
 NumConns:  DWORD;  
 RasResult: Longint;  
begin  
 Result := 0;  

 //Load the RAS DLL  
 RasDLL := LoadLibrary("rasapi32.dll");  
 if RasDLL = 0 then Exit;  

 try  
   RasEnums := GetProcAddress(RasDLL, "RasEnumConnectionsA");  
   if @RasEnums = nil then  
     raise ERasError.Create("RasEnumConnectionsA not found in rasapi32.dll");  

   Conns[1].dwSize := SizeOf(Conns[1]);  
   BufSize         := SizeOf(Conns);  

   RasResult := RasEnums(@Conns, BufSize, NumConns);  

   if (RasResult = 0) or (Result = cERROR_BUFFER_TOO_SMALL) then Result := NumConns;  
 finally  
   FreeLibrary(RasDLL);  
 end;  
end;

Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php


 
Reindeer Moss Eater ©   (2004-09-21 08:36) [8]

Чушь какая.
Установил сейчас соединение с домашним компьютером и мне эта чушь сказала, что я "соединился с интернет".


 
Digitman ©   (2004-09-21 13:22) [9]


> Samowar ©   (21.09.04 03:38) [7]


> Про какую ПОЛЬ ты говориш? Если ты имел ввиду моль, то


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

а даже если этот комп и есть комп в сети провайдера, то это отнюдь не значит, что провайдер обязан выполнять любые твои запросы на доступ к любым иным хостам за пределами его, провайдера, подсети


 
maxistent ©   (2004-09-21 17:02) [10]

Ну Вы ещё подеритесь, горячие финские парни! Я ж сказал: РАССЛАБЬТЕСЬ!!! :)



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.027 c
14-1099323646
OSokin
2004-11-01 18:40
2004.11.28
Оцените новый сайт (личный)


6-1095258006
AlexV
2004-09-15 18:20
2004.11.28
Как проверить, доступен ли комп в локальной сети?


14-1100070632
Суслик
2004-11-10 10:10
2004.11.28
service pack


14-1100197835
lamerok
2004-11-11 21:30
2004.11.28
Где взять полные арфографические словари?


14-1100080077
Zoloto
2004-11-10 12:47
2004.11.28
Формула в Excel





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский