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

Вниз

ip адресс   Найти похожие ветки 

 
Viktor   (2004-05-23 15:46) [0]

доброго времени суток.
подскажите пожалуйста, как получить ip адреса компов в локальной сети.
заранее признателен за помошь


 
BiN ©   (2004-05-24 10:49) [1]

Можно воспользоваться NetServerEnum для получения имен компьютеров. А затем по списку пройтись gethostbyname или getaddrinfo для получения ip-адресов.


 
tesseract   (2004-05-25 09:26) [2]

Пошли broadcast по UDP на порт 65535. должны ответить. Главное еслли есть маски подсети правильно его послать.


 
ISP ©   (2004-05-25 19:24) [3]

>BiN ©   (24.05.04 10:49) [1]
А получить MAC address удалённого компа? Зная имя или IP?


 
Rouse_ ©   (2004-05-25 21:39) [4]

> [3] ISP ©   (25.05.04 19:24)
А ARP нам для чего?


 
Verg ©   (2004-05-25 21:53) [5]


> [2] tesseract   (25.05.04 09:26)


Чем и кто должны ответить, и почему? Поясти, пожалуйста.


> [3] ISP ©   (25.05.04 19:24)
> >BiN ©   (24.05.04 10:49) [1]
> А получить MAC address удалённого компа? Зная имя или IP?


А, пардон, при чем тут MAC адрес?


 
52345262456   (2004-05-26 09:50) [6]

SP ©   (25.05.04 19:24) [3]

>BiN ©   (24.05.04 10:49) [1]
А получить MAC address удалённого компа? Зная имя или IP?


Используй функцию Netbios из модуля NB30.pas


 
tesseract ©   (2004-05-26 10:16) [7]

2>>verg Просто пошлют байт что они есть, что-то вроде широковешательного echo.


 
Федор Т   (2004-05-26 21:35) [8]

var
 Form1: TForm1;
 flagError: boolean;
const InitialSize = $1;

implementation

procedure TNetEnumThread.BeforeUpdate;
begin
TreeNode:=nil;
Form1.TreeView1.Items.Clear;
Form1.Button1.Enabled:=false;
end;

procedure TNetEnumThread.AfterUpdate;
begin
Form1.TreeView1.FullExpand;
Form1.Button1.Enabled:=true;
end;

procedure TNetEnumThread.Execute;
begin
FreeOnTerminate:=True;
Synchronize(BeforeUpdate);
LoadNetNode(nil);
Synchronize(AfterUpdate);
end;

procedure TNetEnumThread.AddChildNode;
begin
TreeNode:=Form1.TreeView1.Items.AddChild(TreeNode,ChildNode);
end;

procedure TNetEnumThread.LoadNetNode(NetNode: PNetResourceA);
var hEnum : THandle;
   Count,BufSize: DWORD;
   NR,Buf: PNetResourceA;
   R: Integer;
   next,add:boolean;
   CurrentNode: TTreeNode;
begin
R:=WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,NetNode,hEnum);
if R<>NO_ERROR then exit;
BufSize:=InitialSize ; GetMem(Buf,BufSize);
try
 while true do
 begin
  Count:=$FFFFFFFF; // I wish to read ALL items
  R:=WNetEnumResource(hEnum,Count, Buf, BufSize);
  if R = ERROR_MORE_DATA then // Oops ! The InitialSize is too small !
  begin
   Count:=$FFFFFFFF; // I wish to read ALL items
   FreeMem(Buf); GetMem(Buf,BufSize);
   R:=WNetEnumResource(hEnum,Count, Buf, BufSize);
  end;
  if R = ERROR_NO_MORE_ITEMS then break; // All items are processed
  if R<>NO_ERROR then abort; // R is the error code. Process it!
  NR:=Buf;
  while Count>0 do
  begin
    CurrentNode:=TreeNode; // Remember current position

    if NR.lpRemoteName<>nil then
     ChildNode:=StrPas(NR.lpRemoteName)
    else
     ChildNode:="-";

    add:=false;
    next:=false;

    case NR.dwDisplayType of
     RESOURCEDISPLAYTYPE_NETWORK: next:=true;
     RESOURCEDISPLAYTYPE_DOMAIN: begin
                                  TreeNode:=nil;
                                  add:=true;
                                  next:=true;
                                 end;
     RESOURCEDISPLAYTYPE_SERVER: add:=true;
    end;

    if add=true then Synchronize(AddChildNode);
    if next=true then LoadNetNode(NR);
    if add=true then TreeNode:=CurrentNode; // restore current position

    Inc(NR);
    Dec(Count);
   end;
  end;
  finally
 WNetCloseEnum(hEnum); // Close handle
 FreeMem(Buf); // Free memory1
end;

end;

{$R *.dfm}
Вот может пригодится, правдо тут имя хостов в локальной сети.


 
megavolt   (2004-05-27 11:01) [9]

А можно поподробнее на счёёт широковещательного запроса? И какой нибудь маленький примерчик? Хотелось бы получить на выходе список компов присутствующих в сети. Т.е. IP адреса включенных компов.



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

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

Наверх




Память: 0.49 MB
Время: 0.105 c
3-1088586735
DelphiNew
2004-06-30 13:12
2004.07.25
проблема с TDataSet


1-1089711127
Kost
2004-07-13 13:32
2004.07.25
Сложное наследование


11-1076696337
Владимир Кладов
2004-02-13 21:18
2004.07.25
Новый дизайн главного сайта KOL


8-1084257817
Strimer
2004-05-11 10:43
2004.07.25
Восстановление исходного изображения при FormResize


3-1089002851
Jiny
2004-07-05 08:47
2004.07.25
IB manager problem