Главная страница
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.024 c
14-17335
Zergling
2003-02-18 07:34
2003.03.06
Нужна докуметация по DirectSound (желательно на русском)


1-17117
Alessio2003
2003-02-22 00:13
2003.03.06
Доступ к RichEdit


14-17299
Dimich1978
2003-02-20 09:25
2003.03.06
Траспортники барзеют(Пенза)


1-17128
Builder
2003-02-22 15:41
2003.03.06
INPUT type=file


14-17264
copyr25
2003-02-19 06:06
2003.03.06
Баннеромантия