-
Скажите, пожалуйста, как обратиться к какому-нибудь файлу, папке, расположенной на одном из компьютеров локальной сети? Как это делается?
-
\\server\share1\myfile.txt
-
Спасибо. А как "перебрать" все компьютеры локальной сети (их число заранее неизвестно) и сделать то же самое?
-
Получить IP компа и маску подсети. Перебрать все IP из сети компа и проверить на "живость", например, пингом. Пинговать поможет Idny, там же есть TidNetworkCalculator, вроде как при помощи него можно получать списки IP сети на основе адреса/маски, но я его не юзал и как юзать - не знаю.
-
> как "перебрать" все компьютеры локальной сети
WNetEnumResource()
-
> clickmaker © (04.06.07 10:21) [4]
А она разве не виндозные ресурсы перебирает? Все компы ИМХО можно только сканом сети перебрать.
-
> G_M_S (04.06.2007 13:10:05) [5]
> Все компы ИМХО можно только сканом сети перебрать.
Все компы ИМХО даже сканом сети не перебрать.
-
> Все компы ИМХО даже сканом сети не перебрать.
Все адреса локальной сети, для буквоедов. Ессно не все из них будут присвоены компам. И WNetEnumResource тоже позволяет перебирать не все хосты в локальной сети, а только те, которые являются членами рабочей группы/домена.
-
Покажите примерчик, пожалуйста. Я совсем в этой области не разбираюсь. Вот возникла идея сетевой программы проверки знаний по тестам, и она, по идее, должна собрать результаты со всех компьютеров локальной сети в компьютерном классе на учительский :).
-
> [8] AlexanderMS © (04.06.07 18:27)
procedure TNetScanThread.EnumResources(LpNR: PNetResource);
var
NetHandle: DWORD;
BufSize: DWORD;
Size: DWORD;
NetResources: PNetResourceArray;
Count: DWORD;
NetResult: Integer;
i: Integer;
s1: string;
begin
if WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, LpNR, NetHandle) <> NO_ERROR
then Exit;
try
BufSize := 50 * SizeOf(TNetResource);
GetMem(NetResources, BufSize);
try
while True do
begin
if FScanNetwork.FCancel then
Exit;
Count := 1;
Size := BufSize;
NetResult := WNetEnumResource(NetHandle, Count, NetResources, Size);
if NetResult = ERROR_MORE_DATA then
begin
BufSize := Size;
ReallocMem(NetResources, BufSize);
Continue;
end;
if NetResult <> NO_ERROR then Exit;
for I := 0 to Count - 1 do
begin
if FScanNetwork.FCancel then
Exit;
with NetResources^[I] do
begin
if RESOURCEUSAGE_CONTAINER = (DwUsage and RESOURCEUSAGE_CONTAINER) then
EnumResources(@NetResources^[I]);
if dwDisplayType = RESOURCEDISPLAYTYPE_SERVER then
begin
s1 := lpRemoteName;
s1 := Copy(s1, 3, length(s1));
FslHosts.Add(s1);
end;
end;
end;
end;
finally
FreeMem(NetResources, BufSize);
end;
finally
WNetCloseEnum(NetHandle);
end;
end; только если компов много - медленно работать будет, лучше IP сканер.
-
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
|