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

Вниз

как проверить соединение с интернетом на выделенной линии?   Найти похожие ветки 

 
DelphiN! ©   (2004-07-01 20:19) [0]

Есть функция, которая показывает наличие соединения с интернетом только через диалап, а на выделенке(LAN), возвращает отсутствие соединения, вот привожу код ф-ии:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Registry, WinSock, WinInet, StdCtrls;

type
TConnectionType = (ctNone, ctProxy, ctDialup);

function ConnectedToInternet : TConnectionType;
function RasConnectionCount : Integer;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

//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;

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(IntToStr(RasConnectionCount));
if ConnectedToInternet=ctNone then Form1.Caption:="ctNone";
if ConnectedToInternet=ctProxy then Form1.Caption:="ctProxy";
if ConnectedToInternet=ctDialup then Form1.Caption:="ctDialup";
end;

end.

Как мне получить статус соединения с инетом на выделенках?

Заранее благодарен


 
Reindeer Moss Eater ©   (2004-07-02 12:02) [1]

Скажу больше.
Эта функция не показывает факт "соединения с интернетом" по диалапу.
Позвони на комп своего друга Пети и функция бодро отрапортует тебе что ты в инете.

На сайте есть длинная статья на тему проверки "соденинения с инетом" и коррекции сознания.


 
Reindeer Moss Eater ©   (2004-07-02 12:04) [2]

точнее корекции дефектов мышления


 
Iraizor ©   (2004-07-02 12:17) [3]

Самое простое - подконнектится к любому известному интернет монстру типа яндекса.


 
Reindeer Moss Eater ©   (2004-07-02 12:35) [4]

А зачем коннектиться к монстру яндекса, если программа наверняка предназначена для общения с чем-то конкретным?


 
Iraizor ©   (2004-07-02 12:40) [5]

Если приконнектится к яндексу - значит есть связь, иначе нету.


 
Reindeer Moss Eater ©   (2004-07-02 12:41) [6]

Если приконнектится к яндексу - значит есть связь, иначе нету.

С кем есть и с кем нету, если приконнектиться к Яндексу?


 
Iraizor ©   (2004-07-02 12:53) [7]

Точнее сказать если приконнектился к яндексу - значит есть доступ в интернет, иначе нету.Или я не прав ?


 
Iraizor ©   (2004-07-02 12:55) [8]

Еще точнее не приконнектится, а попытатся использовать функцию GetHostByName


 
Reindeer Moss Eater ©   (2004-07-02 12:57) [9]

А зачем соединяться с Яндексом, что бы из этого сделать предположение о наличии "связи с Интерентом" чтобы потом установить связь с тем, с чем должна работать программа?

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



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

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

Наверх





Память: 0.47 MB
Время: 0.029 c
14-1092382830
ruslan
2004-08-13 11:40
2004.09.05
Timaje


1-1093086372
masqito
2004-08-21 15:06
2004.09.05
Помогите с построением компонентов.


14-1092761293
pavel_pavel
2004-08-17 20:48
2004.09.05
Люди из МИРЭА


6-1088615393
leonidus
2004-06-30 21:09
2004.09.05
Чем заменить idHTTP


3-1092136720
zorik
2004-08-10 15:18
2004.09.05
Udf





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский