Конференция "Сети" » Работа с локальной сетью. [D7, WinXP]
 
  • AlexanderMS © (29.05.07 19:57) [0]
    Скажите, пожалуйста, как обратиться к какому-нибудь файлу, папке, расположенной на одном из компьютеров локальной сети? Как это делается?
  • umbra © (29.05.07 20:17) [1]
    \\server\share1\myfile.txt
  • AlexanderMS © (02.06.07 18:29) [2]
    Спасибо. А как "перебрать" все компьютеры локальной сети (их число заранее неизвестно) и сделать то же самое?
  • G_M_S © (04.06.07 09:59) [3]
    Получить IP компа и маску подсети. Перебрать все IP из сети компа и проверить на "живость", например, пингом. Пинговать поможет Idny, там же есть TidNetworkCalculator, вроде как при помощи него можно получать списки IP сети на основе адреса/маски, но я его не юзал и как юзать - не знаю.
  • clickmaker © (04.06.07 10:21) [4]

    > как "перебрать" все компьютеры локальной сети

    WNetEnumResource()
  • G_M_S © (04.06.07 13:10) [5]

    > clickmaker ©   (04.06.07 10:21) [4]

    А она разве не виндозные ресурсы перебирает? Все компы ИМХО можно только сканом сети перебрать.
  • Anatoly Podgoretsky © (04.06.07 13:18) [6]
    > G_M_S  (04.06.2007 13:10:05)  [5]

    > Все компы ИМХО можно только сканом сети перебрать.

    Все компы ИМХО даже сканом сети не перебрать.
  • G_M_S © (04.06.07 15:18) [7]

    > Все компы ИМХО даже сканом сети не перебрать.

    Все адреса локальной сети, для буквоедов. Ессно не все из них будут присвоены компам. И WNetEnumResource тоже позволяет перебирать не все хосты в локальной сети, а только те, которые являются членами рабочей группы/домена.
  • AlexanderMS © (04.06.07 18:27) [8]
    Покажите примерчик, пожалуйста. Я совсем в этой области не разбираюсь. Вот возникла идея сетевой программы проверки знаний по тестам, и она, по идее, должна собрать результаты со всех компьютеров локальной сети в компьютерном классе на учительский :).
  • Eraser © (04.06.07 20:10) [9]
    > [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 сканер.
  • Alarm © (05.06.07 14:35) [10]
  • имя (17.06.07 21:34) [11]
    Удалено модератором
  • имя (08.08.07 21:45) [12]
    Удалено модератором
  • имя (08.05.08 14:11) [13]
    Удалено модератором
 
Конференция "Сети" » Работа с локальной сетью. [D7, WinXP]
Есть новые Нет новых   [134431   +15][b:0][p:0.002]