Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.04;
Скачать: CL | DM;

Вниз

Сетевые компоненты в Delphi7   Найти похожие ветки 

 
*partizan* ©   (2004-01-27 19:28) [0]

Приветсвую Вас Мастера!
Ситуация следующая:
Дипломка: "Сетевой сканер"
Собираюсь писать на Delphi7, но как глянул сколько там сетевых компонентов, так на месте и растерялся...
Сетевых прог мы раньше не писали...
Подскажите хотя бы для начала, какие компоненты нужно использовать для скана сетки и какой с кем взаимодейсвует?
Буду очень признателен...


 
mntek ©   (2004-01-28 01:39) [1]

что нужно? - какие компы в сети? -тогда смотри:
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;  -подключен ли комп к сетке;

unit FindComp;  
interface  
uses  
Windows, Classes;  
function FindComputers: DWORD;  
var  
Computers: TStringList;  
implementation  
uses  
SysUtils;  
const  
MaxEntries = 250;  
function FindComputers: DWORD;  
var  
EnumWorkGroupHandle, EnumComputerHandle: THandle;  
EnumError: DWORD;  
Network: TNetResource;  
WorkGroupEntries, ComputerEntries: DWORD;  
EnumWorkGroupBuffer, EnumComputerBuffer: array[1..MaxEntries] of TNetResource;  
EnumBufferLength: DWORD;  
I, J: DWORD;  
begin  
Computers.Clear;  
FillChar(Network, SizeOf(Network), 0);  
with Network do  
begin  
  dwScope := RESOURCE_GLOBALNET;  
  dwType := RESOURCETYPE_ANY;  
  dwUsage := RESOURCEUSAGE_CONTAINER;  
end;  
EnumError := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, @Network, EnumWorkGroupHandle);  
if EnumError = NO_ERROR then  
begin  
  WorkGroupEntries := MaxEntries;  
  EnumBufferLength := SizeOf(EnumWorkGroupBuffer);  
  EnumError := WNetEnumResource(EnumWorkGroupHandle, WorkGroupEntries, @EnumWorkGroupBuffer, EnumBufferLength);  
  if EnumError = NO_ERROR then  
  begin  
    for I := 1 to WorkGroupEntries do  
    begin  
      EnumError := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, @EnumWorkGroupBuffer[I], EnumComputerHandle);  
      if EnumError = NO_ERROR then  
      begin  
        ComputerEntries := MaxEntries;  
        EnumBufferLength := SizeOf(EnumComputerBuffer);  
        EnumError := WNetEnumResource(EnumComputerHandle, ComputerEntries, @EnumComputerBuffer, EnumBufferLength);  
        if EnumError = NO_ERROR then  
          for J := 1 to ComputerEntries do  
            Computers.Add(Copy(EnumComputerBuffer[J].lpRemoteName, 3, Length(EnumComputerBuffer[J].lpRemoteName) - 2));  
        WNetCloseEnum(EnumComputerHandle);  
      end;  
    end;  
  end;  
  WNetCloseEnum(EnumWorkGroupHandle);  
end;  
if EnumError = ERROR_NO_MORE_ITEMS then  
  EnumError := NO_ERROR;  
Result := EnumError;  
end;  
initialization  
Computers := TStringList.Create;  
finalization  
Computers.Free;  
end. - ищет все компы в сети;


 
Erazzer   (2004-01-28 01:52) [2]

Используй Indy - это ОДНОЗНАЧНО ;)))
На Indy ты легко межешь сделать многопоточный сканер, т.к. инди само (или сама) по себе поддерживет много поточность, и вообще я ссчитаю, что Indy это мощное средство, я на нём даже proxy сервер сделал!


 
mntek ©   (2004-01-28 01:54) [3]

тогда уж лучше com+ или вообще .NET:))


 
Erazzer   (2004-01-28 01:59) [4]

Тогда уж лучше FreeBSD ;)))


 
mntek ©   (2004-01-28 02:00) [5]

вообще да:))И не delphi явно:))



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

Текущий архив: 2004.04.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
1-1079040897
IGORYOK
2004-03-12 00:34
2004.04.04
Бытро удаление из TreeView


11-1059573285
Sapersky_
2003-07-30 17:54
2004.04.04
Свойство Localizy


3-1078897962
Flagman
2004-03-10 08:52
2004.04.04
Как приконнектиться к Ораклу?


4-1074689573
prt
2004-01-21 15:52
2004.04.04
Цвет рабочего стола


3-1078858782
Дмитрий Татарников
2004-03-09 21:59
2004.04.04
Запрос по дате в DBISAM