Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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
14-17284
malkolinge
2003-02-19 14:26
2003.03.06
РАбота !


1-17018
R
2003-02-25 01:43
2003.03.06
Два вопроса на разные темы.


1-17111
Smok_er
2003-02-25 01:17
2003.03.06
Простейший unzip


4-17449
Nick_N_A
2003-01-18 07:30
2003.03.06
ActiveX & COM


3-16866
JibSkeart
2003-02-03 16:32
2003.03.06
Отправить данные сторонней программе из





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский