Siec

0

Jak dodac do memo wszystkie nazwy komputerow z sieci i ich ip w takiej formie?

Komputer1<:>Ip1
Komputer2<:>Ip2
Komputer3<:>Ip3
...

Prosilbym o jakis przyklad kodu, nigdzie nic na ten temat nie znalazlem. Z gory dziekuje za odpowiedz.

0

zaznajom się z WNetEnumResource ale łatwiej jest zrobić żeby skanowało wszystkie IP od np 192.168.1.1 do 192.168.1.100 i zapisywało jakie komputery im są przypisane. Do zamiany IP na nazwę komputera (hosta - ale dla lokalnych komputerów to to samo) słuzy polecenie gethostbyaddr

0

gethostbyaddr nie dziala. Trzeba cos do uses dodac?

[dopisane]
Te polecenie chyba z php pomyliles

0

Uses WinSock;

[dopisane do postu poniżej]
<font size="4"color="red">Forum to chyba nie koncert życzeń.</span>

0

Dajcie przyklad tego zastosowania

0

procedurka z jednego programiku:

function IPAddrToName(IPAddr : String): String;
var 
  SockAddrIn: TSockAddrIn; 
  HostEnt: PHostEnt;
  WSAData: TWSAData; 
begin 
  WSAStartup($101, WSAData); 
  SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPAddr));
  HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
  if HostEnt<>nil then
  begin
    result:=StrPas(Hostent^.h_name)
  end
  else
  begin
    result:='';
  end;
end;

begin
  ShowMessage('Gość o IP 192.168.1.1 ma nazwę '+IPAddrToName('192.168.1.1'));
end;
0

Wszystko fajnie, ip pobiera, ale jest taka sprawa, ze np. w niektorych sieciach ip jest od 192.168.2.1 do 192.168.2.100, ale nie o to chodzi. Ta procedura ktora dales zawiesza program, jezeli taki ip nie istnieje, czy da sie moze jakos sprawdzic czy taki ip istnieje w sieci?

0

jasne pingujesz IP przy pomocy komponentów Indy.

daj na formę TIdIcmpClient i daj nazwę "klient" i skorzystaj z procki

function TForm1.pinguj(ip:string):boolean;
begin
  klient.Host:=ip;
  klient.TTL:=1;
  klient.ReceiveTimeout:=50;
  klient.Ping;
  if klient.ReplyStatus.ReplyStatusType=rsEcho then Result:=true else Result:=false;
end;

przykład: pinguj('192.168.2.2');

ale jest taka sprawa, ze np. w niektorych sieciach ip jest od 192.168.2.1

wiem u mnie w sieci też jest z dwójką tylko podałem 1 bo wiem że tak jest w większości sieci.

PS. próba zpingowania 127.0.0.1 trochę potrwa a nic nie poda

0

Temat był już kiedyś poruszany na forum
Użyj kompomentów Indy do zpingowania każdego IP, jeżeli będzie odpowiedź to wtedy pobierz nazwę komputera

//Adamo był szybszy

//Do postu poniżej
Kompoment IdIicmp, pobaw się ze zdarzeniem OnReplay.

0

A ktorego komponentu indy do tego uzyc?

0

przecież napisałem kod trzy posty wyzej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1