Главная страница
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-1079091186
_Guest_
2004-03-12 14:33
2004.04.04
методы объектов


1-1079498494
Malax
2004-03-17 07:41
2004.04.04
Копирование и запуск приложения


1-1079425037
Miwa
2004-03-16 11:17
2004.04.04
Неужели и вправду код функции должен поместится в экран?


14-1078767251
YurikGl
2004-03-08 20:34
2004.04.04
Глюки Винампа


1-1079326290
GraurBERGER
2004-03-15 07:51
2004.04.04
какой компонент Delphi надо использовать для того чтоб