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

Вниз

Как получить список компов в локальной сети?   Найти похожие ветки 

 
Lex ©   (2003-01-18 10:49) [0]

Или, хотя бы, как проверить, что комп с именем name подключен к сети? OS - Windows NT4. Спасибо.


 
NewGuest   (2003-01-18 13:58) [1]

Список компов...

function enumResourcesIn(Workgroup: string): boolean;
var
EnumHandle: THandle;
WorkgroupRS: TNetResource;
BufSize: Cardinal;
Entries: Cardinal;
Rest: Cardinal;
begin
ResourceCount:=0;
Workgroup:=Workgroup+#0;
FillChar(WorkgroupRS, SizeOf(WorkgroupRS), 0);
with WorkgroupRS do begin
dwScope:=RESOURCE_GLOBALNET;
dwType:=RESOURCETYPE_ANY;
dwDisplayType:=RESOURCEDISPLAYTYPE_DOMAIN;
dwUsage:=RESOURCEUSAGE_CONTAINER;
lpRemoteName:=@Workgroup[1];
end;
WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, @WorkgroupRS, EnumHandle);
Entries:=200;
BufSize:=SizeOf(NetResources);
Rest:=WNetEnumResource(EnumHandle, Entries, @NetResources[0], BufSize);
if (Rest=NO_ERROR) and (Entries>0) then Result:=true else Result:=false;
ResourceCount:=Entries;
WNetCloseEnum(EnumHandle);
end;



Пропинговать отдельный комп (WinSock подключи)

function getNameOf(const IP: string): string;
var
h: PHostEnt;
addr: TSockAddr;
GInitData: TWSADATA;
begin
WSAStartup($101, GInitData);
Result:="";
addr.sin_addr.s_addr:=inet_addr(pchar(IP));
if addr.sin_addr.s_addr<>INADDR_NONE then
begin
h:=gethostbyaddr(@addr.sin_addr.s_addr, sizeof(addr), AF_INET);
if h<>nil then Result:=h^.h_name
end;
WSACleanup
end;


 
NewGuest   (2003-01-18 13:59) [2]

вот переменные, кот. требуются в примере списка компов

ResourceCount : Integer;
NetResources: array[0..200]of TNetResource;


 
sinm   (2003-01-19 05:29) [3]

Хочу добавить, что пинга мало, если нужно все сделать быстро. Лучше (если, конечно, не лень) послать на 137/udp запрос с заданным таймаутом. Если таймаут (в локале где-то 50-70 мсек) превзойден, то комп не отдаст своего имени. Если задача не имеет смысла без опроса по smb, тj надо сделать connect(timeout) на порт 139/tcp. А если надо получить простой набор компов, на которых загружен стек ip, то легче по icmp отправить запрос на последний (255?) адрес вашей маски и после этого читать ответы из буфера. Правда при этом надо быть уверенным в том, что прямые широковещательные сообщения не экранируются маршрутизаторами/свитчами/стенами.


 
Lex ©   (2003-01-19 12:02) [4]

NewGuest> Можешь объяснить, как это все работает, или скажи, в какой переменной хранится список компов? И как его в tstrings преобразовать?
sinm> Я не спец в этой области, так что попроще, пожалуйста :)



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

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

Наверх




Память: 0.48 MB
Время: 0.022 c
14-17382
DAC
2003-02-18 14:20
2003.03.06
Часто задаваемые вопросы / Часто используемые ответы


8-17208
vitaliy_new
2002-11-21 12:08
2003.03.06
Фоновый рисунок формы


4-17456
Сергей Зорин
2003-01-16 13:31
2003.03.06
Как узнать о изменении положении чужого окна.


9-16844
greenrul
2002-10-09 13:49
2003.03.06
Динамическая загрузка wav в WaveList:


1-17134
Сутковой Вадим
2003-02-22 21:50
2003.03.06
Просмотр модели.