Page 1 sur 1

Routine de recherche du Hostname par l'adresse IP

Publié : mer. 14/sept./2011 13:30
par GallyHC
Bonjour tous,

Voici une petite routine pour donner le HostName par une adresse IP. Fonctionne seulement sur Windows. La procédure StringConvert_memory() sert a la conversion du formatage d'une chaine en mémoire. Pour que le code soit compatible en Ascii et Unicode.

Code : Tout sélectionner

; +======================================================+
; |   ROUTINE DE RECHERCHE DU HOSTNAME PAR ADRESSE IP.   |
; +------------------------------------------------------+
; | COPYRIGHT(C)2007-2008, ALL RIGHT RESERVED KOAKDESIGN |
; +--------------+---------------------------------------+
; | Program type | PUREBASIC 4.40                        |
; +--------------+---------------------------------------+
; | VER & REV    | 0.0.1                                 |
; +--------------+---------------------------------------+
; | Program name | main.pbi                              |
; +======================================================+

; +======================================================+
; | Original Version: 0.0.1                              |
; +--------------+---------------------------------------+
; | Created by   | GallyHomeCorp                         |
; | Graphix by   |                                       |
; +--------------+---------------------------------------+
; | Comments:    |                                       |
; +--------------+                                       |
; |                                                      |
; |                                                      |
; |                                                      |
; +======================================================+

; +======================================================+
; | Système d'Exploitation                               |
; +--------------+---------------------------------------+
; | Window       | Oui                                   |
; | Linux        | NON                                   |
; | MacOS        | NON                                   |
; +======================================================+

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

EnableExplicit

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

InitNetwork()

#AF_INET      = 2
#SOCKET_ERROR = -1

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

Procedure.i StringConvert_memory(stext.s, format.l = #PB_Unicode)
; ROUTINE DE CONVERTION MUTI-FORMAT.
  Define *mem
  Define result.s

  *mem = AllocateMemory(StringByteLength(stext, format)+2)
  PokeS(*mem, stext, -1, format)
  ProcedureReturn *mem

EndProcedure

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

Procedure.s GetHostNameFromIP(sadress.s)
; ROUTINE DE RECHERCHE DU HOSTNAME.
  Protected lhadress.l
  Protected high.b = 1
  Protected low.b = 1 
  Protected wsaversion.w
  Protected wsa.WSAData
  Protected *host.HOSTENT

  PokeB (@wsaversion, high)
  PokeB (@wsaversion + 1, low)
  If WSAStartup_ (wsaversion, wsa) = #NOERROR
    lhadress = inet_addr_(StringConvert_memory(sadress, #PB_Ascii))
    If lhadress <> #SOCKET_ERROR
      If sadress <> "0.0.0.0" And sadress <> ""
        *host = gethostbyaddr_(@lhadress, 4, #AF_INET)
        If *host <> 0
          ProcedureReturn PeekS(*host\h_name, -1, #PB_Ascii)          
        EndIf
      EndIf
    EndIf
    WSACleanup_ ()
  EndIf
  ProcedureReturn ""

EndProcedure

; ****************************************************************************
; ****************************************************************************
; ****************************************************************************
; ****************************************************************************

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

Debug GetHostNameFromIP("127.0.0.1")
J'ai aussi mis le code sur mon site a l'adresse "http://koakdesign.info/news/?url=4d&val=34"

Cordialement,
GallyHC

Re: Routine de recherche du Hostname par l'adresse IP

Publié : mer. 14/sept./2011 17:21
par Kwai chang caine
Merci GallyHC 8)
Le resultat est LOCALHOST chez moi, je suppose que c'est normal :roll:

Re: Routine de recherche du Hostname par l'adresse IP

Publié : mer. 14/sept./2011 17:58
par GallyHC
bonjour,

Avec l'adresse IP "127.0.0.1" il est normal d'avoir LocalHost :). sinon tu peux tester en indiquant l'adresse IP de ton poste local (surement en 192.168.x.x).

Cordialement,
GallyHC

Re: Routine de recherche du Hostname par l'adresse IP

Publié : mer. 14/sept./2011 18:08
par Kwai chang caine
Mais quel c....quel c... 8O
Des fois je m’épate tellement à repousser mes limites de jour en jours :oops:

Ca marche nickel....merci beaucoup GallyHC

Re: Routine de recherche du Hostname par l'adresse IP

Publié : jeu. 15/sept./2011 12:10
par gildev
Impressionnant. Un grand merci car ça va me servir.

Re: Routine de recherche du Hostname par l'adresse IP

Publié : jeu. 15/sept./2011 12:47
par GallyHC
Bonjour,

En fait c'est juste une adaptation d'un code en VB6, Je converti des code en fonction de mes besoins et je partage après.

Cordialement,
GallyHC

Re: Routine de recherche du Hostname par l'adresse IP

Publié : jeu. 15/sept./2011 13:51
par Ar-S
Testé avec l'adresse allouée pour ma box et ça fonctionne :D
Image

Re: Routine de recherche du Hostname par l'adresse IP

Publié : jeu. 15/sept./2011 14:08
par flaith
C'est, en fait, un nslookup :)
Sinon sympa le code, merci du partage :D
Mais si tu as une adresse virtuelle (genre VirtualBox ou VMWare), tu as dans ce cas de figure plusieurs adresses IP, plus compliqué à gérer mais le résultat reste le même donc Image

Re: Routine de recherche du Hostname par l'adresse IP

Publié : jeu. 15/sept./2011 16:29
par Kwai chang caine
C'est, en fait, un nslookup :)
C'est dingue ce qu'en informatique y'a toujours une expression pour chaque chose 8O
On dirait le domaine du médical.... :?
Comment vous faites pour connaitre tous ces gros mots ???? :roll:
Et surtout pour pouvoir les sortir au bon moment 8O

Dire que j'en apprend tous les jours, c'est faire part d'un doux euphémisme....
Dire que je le retiendrais....serait faire part d'un doux optimisme....

Tiens ce soir j'essaierais de l'utiliser avant de l'oublier :D
Chérie.....tu peut me passer le NSLOOKUP s'il te plait :mrgreen:

En tout cas merci FLAITH 8)

Re: Routine de recherche du Hostname par l'adresse IP

Publié : jeu. 15/sept./2011 19:21
par Backup
Kwai chang caine a écrit :
C'est, en fait, un nslookup :)
C'est dingue ce qu'en informatique y'a toujours une expression pour chaque chose 8O

c'est une commande !! :roll:

ouvre l'invite de commande , et tape nslookup
(ou menu demarrer /executer : tape nslookup )

tu couchera moins bete ;)

Re: Routine de recherche du Hostname par l'adresse IP

Publié : jeu. 15/sept./2011 19:55
par flaith
Exact Dobro merci, et de rien KCC, merci aussi à toi ;)

petite info sur la commande : nslookup

Re: Routine de recherche du Hostname par l'adresse IP

Publié : ven. 16/sept./2011 19:17
par Kwai chang caine
Bon d'accord..c'est vrai si c'est une commande normal que ça ai un nom :roll:

Il n’empêche encore une que je connaissais pas.
Y'a peut etre un lexique de tout ce que l'on peut taper dans la zone commande :roll:
Hors mis le DOS bien sur, parce que en fin de compte c'est presque un langage a part entière

En tout cas c'est moins probant que la fonction de GALLYHC
J'ai ça comme réponse avec nslookup seul :

Code : Tout sélectionner

Serveur par dÚfaut :  HSIB.home
Address:  192.168.1.1
Ou ça avec nslookup 192.168.1.3

Code : Tout sélectionner

> nslookup 192.168.1.3
Serveur :  [192.168.1.3]
Address:  192.168.1.3

*** 192.168.1.3 ne parvient pas à trouver nslookup : No response from server

Re: Routine de recherche du Hostname par l'adresse IP

Publié : ven. 16/sept./2011 21:48
par Droopy
merci pour ce code :D

Re: Routine de recherche du Hostname par l'adresse IP

Publié : dim. 18/sept./2011 0:11
par Backup
Kwai chang caine a écrit : Y'a peut etre un lexique de tout ce que l'on peut taper dans la zone commande :roll:
regarde là : en bas de page le tableau

http://fr.wikipedia.org/wiki/Nslookup

Re: Routine de recherche du Hostname par l'adresse IP

Publié : dim. 18/sept./2011 3:09
par Kwai chang caine
Merci beaucoup DOBRO 8)

Je sais pas si elles sont toutes la...mais ça en fait déjà pas mal :D

Ou est passé le temps ou on s’éclatait, a taper les DIR, RENAME, etc... :roll:
A cette époque, y'avait pas ce frénétique besoin de puissance, toujours plus pour toujours pareil :(

On mettait une journée pour installer un périphérique :D
Ca marchait jamais :D
Qu'est ce que c’était bien 8)

Maintenant, l'informatique est aseptisé....comme toute la société d'ailleurs :?

Encore merci et bonne journée