Форум: "Сети";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];
ВнизСетевые компоненты в 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.053 c