Текущий архив: 2004.11.28;
Скачать: CL | DM;
ВнизКак проверить, доступен ли комп в локальной сети? Найти похожие ветки
← →
AlexV (2004-09-15 18:20) [0]Здравствуйте!
--------------
У меня есть строка, представляющая собой сетевой путь
к файлу или папке, например \\diman\scorpio\projects.txt
Можно ли, особо не замудряясь, определить, есть ли доступ к
машине с именем diman ?
FileExists("\\diman\scorpio\projects.txt") работает долго.
Заранее благодарен. Михаил.
← →
Rouse_ © (2004-09-15 20:21) [1]NetShareEnum даст тебе информацию о типе доступа к ресурсу...
← →
AlexV (2004-09-21 12:04) [2]К сожалению, 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-21 14:25) [3]пингуй компьютер, если ответил - значит есть...
← →
SergeySEM (2004-09-21 15:17) [4]
> Rouse_ © (21.09.04 14:25) [3]
> пингуй компьютер, если ответил - значит есть...
Есть идеи как это сделать???
← →
AlexV (2004-09-21 17:35) [5]Вот я тоже хотел спросить, как это сделать. Я конечно понимаю, что надо пингануть, но как это сделать наиболее просто из Дельфей?
← →
Poirot © (2004-09-21 18:05) [6]есть уж если просто подойти к этому вопросу целая компонента на Indy закладочках:)))
← →
Rouse_ © (2004-09-21 20:36) [7]
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.
← →
AlexV (2004-09-21 22:29) [8]Спасибо товарищи! Я уже и сам разобрался со своей проблемой.
Оказывается, если компа с именем diman нет в сети, то DirectoryExists("\\diman\"); мгновенно ответит, что нет такого каталога. Таким образом можно проверить, включен ли комп diman. А вот DirectoryExists("\\diman\folder1\folder2\folder3\") будет куда дольше работать, т.к. видимо тратится много времени чтобы зайти во все эти подпапки.
Страницы: 1 вся ветка
Текущий архив: 2004.11.28;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.049 c