![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как проверить, доступен ли комп в локальной сети? [D5, Win95/98, WinME, NT4, Win2k, WinXP]
AlexV © (2004-09-15 18:20:00)Здравствуйте!
--------------
У меня есть строка, представляющая собой сетевой путь
к файлу или папке, например \\diman\scorpio\projects.txt
Можно ли, особо не замудряясь, определить, есть ли доступ к
машине с именем diman ?
FileExists('\\diman\scorpio\projects.txt') работает долго.
Заранее благодарен. Михаил.
AlexV (2004-09-21 22:29:00) [1]Спасибо товарищи! Я уже и сам разобрался со своей проблемой.
Оказывается, если компа с именем diman нет в сети, то DirectoryExists('\\diman\'); мгновенно ответит, что нет такого каталога. Таким образом можно проверить, включен ли комп diman. А вот DirectoryExists('\\diman\folder1\folder2\folder3\') будет куда дольше работать, т.к. видимо тратится много времени чтобы зайти во все эти подпапки.
Rouse_ (2004-09-21 20:36:00) [2]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdRawBase, IdRawClient,
IdIcmpClient;
type
TForm1 = class(TForm)
IdIcmpClient1: TIdIcmpClient;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure IdIcmpClient1Reply(ASender: TComponent;
const AReplyStatus: TReplyStatus);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
IdIcmpClient1.Host := 'www.ya.ru';
IdIcmpClient1.Ping;
end;
procedure TForm1.IdIcmpClient1Reply(ASender: TComponent;
const AReplyStatus: TReplyStatus);
begin
ShowMessage(Format('Пинг по адресу %s успешен.', [AReplyStatus.FromIpAddress]));
end;
end.
Poirot (2004-09-21 18:05:00) [3]есть уж если просто подойти к этому вопросу целая компонента на Indy закладочках:)))
AlexV (2004-09-21 17:35:00) [4]Вот я тоже хотел спросить, как это сделать. Я конечно понимаю, что надо пингануть, но как это сделать наиболее просто из Дельфей?
SergeySEM (2004-09-21 15:17:00) [5]
> Rouse_ © (21.09.04 14:25) [3]
> пингуй компьютер, если ответил - значит есть...
Есть идеи как это сделать???
Rouse_ (2004-09-21 14:25:00) [6]пингуй компьютер, если ответил - значит есть...
AlexV (2004-09-21 12:04:00) [7]К сожалению, NetShareEnum - это довольно сложная процедура.
Мне всего лишь надо проверить, включен ли комп с заданным именем.
А вообще, у меня есть сетевые пути файлов и папок, например
\\diman\folder1\
\\diman\folder1\sos.dat
\\diman\scorpio\projects.txt
Я хочу проверить доступны ли эти сетевые файлы и папки в текущий момент.
DirectoryExists('\\diman\folder1\') или
FileExists('\\diman\scorpio\projects.txt') долго работают, если компа с именем \\diman в сети нет. Видимо эти функции долго сеть опрашивают... или что-то вроде того. Когда эти функции выполняют проверку наличия файлов/папок по сети, то проц в это время загружен капитально.
Как бы сделать так, чтобы до DirectoryExists и FileExists проверить, есть ли вообще комп с именем \\diman в сети в данный момент?
Или в крайнем случае хочется уменьшить загрузку процессора во время опроса с пом. DirectoryExists и FileExists
Заранее благодарен.
Rouse_ (2004-09-15 20:21:00) [8]NetShareEnum даст тебе информацию о типе доступа к ресурсу...