Resolution de nom sur réseau local

[Résolu]
Signaler
Messages postés
93
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
25 octobre 2006
-
Messages postés
93
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
25 octobre 2006
-
Bonjour,



J'ai cherché un code source sur ce forum pour faire ceci mais je n'ai rien trouvé...



En fait, je dispose d'une liste d'ip réseau (locale) 192.168.x.x et je
les scanne... Seulement, j'aimerai faire apparaitre aussi leur nom
Netbios (COMPUTER1, COMPUTER2...etc etc



Avez vous un source (ou alors Ze Technique) qui resolve le nom de l'ordi a partir de son ip ???



Merci



Manu

6 réponses

Messages postés
93
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
25 octobre 2006

Bon, je ne peux pas editer mon message precedent alors je corrige juste les fautes de frappes:



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;



ps: Ajouter Winsock dans les uses

pps: CA FONCTIONNE TRES TRES BIEN !!!



Merci a moi-même (et aux autres :-))
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
J'ai bien une solution sans composant, mais je sais pas si elle vas beaucoup te plaire:



la commande:

ping -a IP > fichier



et pour executer une commande depuis Delphi:

http://delphi.developpez.com/faq/?page=interexecution#executerapplication


Loda



PS: y a surement des composant qui le font, mais je ne les connait pas.
Messages postés
93
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
25 octobre 2006

Même en tapant en commande dos avec le -a , cela ne resout pas les noms :-(



Je vais chercher du côté des composants...

Merci



Si qqlun à la soluce ;-)....



Manu
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
ça devrait. t'as peut-être un firewall ou truc comme ça.



Loda
Messages postés
436
Date d'inscription
vendredi 7 novembre 2003
Statut
Membre
Dernière intervention
8 octobre 2008
5
Bonjour,
Si tu as la possibilité de l'utiliser, essayes avec le WMI,
Par défaut c'est installer sur les postes en XP.
Sinon tu peux l'installer sur les postes en 2000 et NT.
Tu pourras accéder à pas mal d'info du réseau..

Dom
Messages postés
93
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
25 octobre 2006

J'ai trouvé ca sur un site:





Get host name using IP-address



Use IPAddrToName function. This function get host information by using GetHostByAddr function.
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<&amp;gtnil then
  begin
    Rresult:=StrPas(Hostent^.h_name)
  end
  else
  begin
    Result:='';
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption:=IPAddrToName(Edit1.Text);
end;

Je testerai ca demain...
Je vous dirais si ca fonctionne...

Merci
M.