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

Вниз

Проверка соединения с локалкой   Найти похожие ветки 

 
Edvard   (2003-07-21 14:25) [0]

Господа, подскажите! Как можно контролировать соединение компа с локалкой?
таким образом не получается:

procedure CheckNet(Sender: TObject); (ставлю на таймер)
begin
if GetSystemMetrics(SM_NETWORK) and $01 = $01 then
ShowMessage("Computer is attached
to a network!")
else
ShowMessage("Computer is not
attached to a network!");
end;


при отключении от сети или просто выдергивании кабеля из сетевухи никак не реагирует.
Какие еще есть варианты?


 
Comwad   (2003-07-21 14:35) [1]

Посылай что-то вроде ping на адрес шлюза.
Есть компоненты для Delphi


 
Nick2000   (2003-07-22 10:46) [2]

>Edvard
Нашел тут такую вещь. Попробуй. Может подойдет.


const
MAX_NEIGHBORS = 20;

function NetAvailable: Boolean;
var
NetRes: array[0..MAX_NEIGHBORS] of TNetResource;
NNError,
hEnum,
EntryCount,
NetResLen: DWORD;
loop1: Integer;
begin
hEnum := -1;
Result := FALSE;
try
NNError := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, nil, hEnum);
if NNError = NO_ERROR then
begin
while NNError <> ERROR_NO_MORE_ITEMS do
begin
EntryCount := 1;
NetResLen := SizeOf(NetRes);
NNError := WNetEnumResource(hEnum, EntryCount, @NetRes, NetResLen);
if (NNError = NO_ERROR) then
begin
for loop1 := 1 to EntryCount do
begin
if Pos("Microsoft", NetRes[0].lpProvider) = 1 then
begin
Result := TRUE;
Break
end
end
end
else
begin
Break
end
end;
WNetCloseEnum(hEnum)
// close enum
end
except
on exception do
if DEBUG then
begin
( "Network Neighborhood Detection Failed.") >Edvard
Нашел тут такую вещь. Попробуй. Может подойдет.


const
MAX_NEIGHBORS = 20;

function NetAvailable: Boolean;
var
NetRes: array[0..MAX_NEIGHBORS] of TNetResource;
NNError,
hEnum,
EntryCount,
NetResLen: DWORD;
loop1: Integer;
begin
hEnum := -1;
Result := FALSE;
try
NNError := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, nil, hEnum);
if NNError = NO_ERROR then
begin
while NNError <> ERROR_NO_MORE_ITEMS do
begin
EntryCount := 1;
NetResLen := SizeOf(NetRes);
NNError := WNetEnumResource(hEnum, EntryCount, @NetRes, NetResLen);
if (NNError = NO_ERROR) then
begin
for loop1 := 1 to EntryCount do
begin
if Pos("Microsoft", NetRes[0].lpProvider) = 1 then
begin
Result := TRUE;
Break
end
end
end
else
begin
Break
end
end;
WNetCloseEnum(hEnum)
// close enum
end
except
on exception do
if DEBUG then
begin
ShowMessage("Network Neighborhood Detection Failed.")
end;
end
end;


 
S@shka   (2003-07-22 12:28) [3]

Да, а с помощью пинга все получилось бы проще!!!


 
Verg   (2003-07-22 12:43) [4]


> S@shka ©
> Да, а с помощью пинга все получилось бы проще!!!


А кто вам сказал, что TCP/IP неотъемлимая часть виндовой сети?


 
Толик   (2003-07-22 13:51) [5]

to Nick2000 (22.07.03 10:46)
Под Win2k это сработает даже в том случае, если комп отключен от сети (узел «Сеть Microsoft Windows» проводник показывает всегда), так что этот способ не проходит.
Скорее здесь может подойти следующее:

type
Tip = array[0..4] of byte;
Pip = ^Tip;
function HostToIP(AHostName: string): string;
const
FormatMask: string = "%d.%d.%d.%d";
var
WSData: TWSAData;
HostEnt: PHostEnt;
IP : Pip;
begin
WinSock.WSAStartup($0101, WSData);
try
HostEnt := WinSock.GetHostByName(pchar(AHostName));
IP := Pip(HostEnt^.h_addr_list^);
( FormatMask, [IP[0], IP[1], IP[2], IP[3]])
to Nick2000 (22.07.03 10:46)
Под Win2k это сработает даже в том случае, если комп отключен от сети (узел «Сеть Microsoft Windows» проводник показывает всегда), так что этот способ не проходит.
Скорее здесь может подойти следующее:

type
Tip = array[0..4] of byte;
Pip = ^Tip;
function HostToIP(AHostName: string): string;
const
FormatMask: string = "%d.%d.%d.%d";
var
WSData: TWSAData;
HostEnt: PHostEnt;
IP : Pip;
begin
WinSock.WSAStartup($0101, WSData);
try
HostEnt := WinSock.GetHostByName(pchar(AHostName));
IP := Pip(HostEnt^.h_addr_list^);
RESULT := SysUtils.Format(FormatMask, [IP[0], IP[1], IP[2], IP[3]]);
finally
WinSock.WSACleanup();
end;
end;

Если эта ф-я вернёт 127.0.0.1 - значит соединения нет.



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

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

Наверх




Память: 0.46 MB
Время: 0.01 c
1-71640
ah
2003-09-09 10:17
2003.09.22
использую edit для индикации , как устранить возможность


14-71931
VEG
2003-09-02 20:11
2003.09.22
Не поверите!!!


14-71900
наблюдатель
2003-09-02 22:16
2003.09.22
Любимый вопрос


6-71779
nobody
2003-07-25 00:03
2003.09.22
tcp/ip programming


1-71755
ruslan_as
2003-09-10 10:18
2003.09.22
Как вложить файл PDF в мой EXE





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