Форум: "Сети";
Текущий архив: 2003.03.06;
Скачать: [xml.tar.bz2];
ВнизКак получить список компов в локальной сети? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c