DNS, PING, TRACEROUTE SANS OCX, SANS DLL, SANS SHELL
pokbizou
Messages postés13Date d'inscriptionlundi 6 mai 2002StatutMembreDernière intervention13 novembre 2003
-
24 mai 2002 à 09:03
cs_gowapinou
Messages postés1Date d'inscriptionsamedi 12 juin 2004StatutMembreDernière intervention21 août 2006
-
21 août 2006 à 16:42
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_gowapinou
Messages postés1Date d'inscriptionsamedi 12 juin 2004StatutMembreDernière intervention21 août 2006 21 août 2006 à 16:42
Ce code ne fonctionne plus sous XP sp2. En effet, l'utilisation du WSAStartup ne fait plus rien ; la variable de type "tagWSAData" n'est pas affecté par l'appel ; aucune erreur n'est générée !
J'ai recherché sur le Net des informations sur une solution de remplacement, mais personne ne répond.
Si vous avez une nouvelle méthode, je suis preneur.
GOWAP
cbnet
Messages postés176Date d'inscriptionvendredi 29 octobre 2004StatutMembreDernière intervention 7 mars 2005 9 févr. 2005 à 21:30
Très pratique, mais dommage que easyping retourne un ping de 0 pour une machine non existante. Mais une p'tie modif et ca roule !
Good job Proger !
cs_Mikax
Messages postés13Date d'inscriptionjeudi 4 avril 2002StatutMembreDernière intervention 3 mars 2004 1 juil. 2002 à 17:44
je complète :
HopeAddr = GetEcho(GetIPbinaryVal(Adresse), 10, CLng(i), "PINGECHO", CLng(HopeAddr))
et la compilation fonctionne.
Proger
Messages postés248Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention19 décembre 2008 28 juin 2002 à 16:32
Tout a fait vrai, ça . Désolé. LA fonction GetNbHop est vraiment nulle, alors je l'ai pas débogué
Debogage :
à la ligne
HopeAddr = GetEcho(GetIPbinaryVal(Adresse), 10, i, "PINGECHO", HopeAddr)
la remplacer par
HopeAddr = GetEcho(GetIPbinaryVal(Adresse), 10, Clng(i), "PINGECHO", HopeAddr)
voila.
cs_Mikax
Messages postés13Date d'inscriptionjeudi 4 avril 2002StatutMembreDernière intervention 3 mars 2004 28 juin 2002 à 15:13
Lorsque l'on veut créer l'exe de ce programme une erreur survient pendant la compilation : type d'argument ByRef incompatible dans la fonction GetNbHope(Adresse As String) du module. Le problème est sur la variable i, qui est pourtant une simple variable integer de boucle.
Quelqu'un d'autre a-t-il eu ce problème ?
Proger
Messages postés248Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention19 décembre 2008 22 juin 2002 à 12:14
mmh, en fait ce que je comprend pas dans ta question, vbnul, c'est ce que tu appelles "la dns" ...
Supposons : c'est le nom de la machine que tu appelles "la dns" ?
C'est le nom que Windows donne à la machine (sic : "nom de l'ordinateur"), ce n'est en aucun cas le nom dns !! C'est pour ca que ça ne marchera jamais avec mon code!
Un nom de machine ne peut être résolue qu'en réseau local (et uniquement si le protocole tcp/ip seul est activé...) donc oublie pour l'avoir sur internet.
Bref, pour ton problème, j'ai le regret de te dire que c'est quasiment impossible de retrouver l'adresse IP du gars sur internet en fonction du nom de sa machine. Voila tout. ("Quasiment", car il existe une solution, mais ça ressemble a du hack, alors chuuuut ;p )
Mais ! elle change la dns ou quoi ?
c'que j'voudrais c a partir de la dns de qqn avoir son ip internet et pouvoir brancher un chat avec lui par exemple.
Proger
Messages postés248Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention19 décembre 2008 12 juin 2002 à 22:36
woops boulette, remplacer hostnam$ par NomH As String, pour faire comme la fonction GetIPofHost.
Proger
Messages postés248Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention19 décembre 2008 12 juin 2002 à 22:35
Heu... tu veux dire que tu souhaites récupérer l'IP wan et non lan d'une machine (cas de machine passerelle) ?
cela signifie que ta machine a plusieurs IP... houla! Malheureusement mon code renverra prioritairement la première adresse IP de la première carte réseau physique de la machine.
Bon, bon ok je vais rajouter la fonction qui va bien...
GetEveryIP (hostnam$, lesIP() As Long) As Long
'le début est comme GetIPofHost() (faites donc un copier-coller vous-même :p)
'renvoie la taille du tableau lesIP() avec une adresse IP type Long dedans
'lesIP() contiendra les IP de la machines. lesIP(1) contenant la première IP, etc.
If exeAPI <> 0
For i = 0 To 250 'on cherche jusqu'a 250 autres IP pour la même machine
RtlMoveMemory exeAPI, ByVal HostInfo.hAddrList + (i * 4), 4
If exeAPI <> 0 Then
RtlMoveMemory IPv4Adr, ByVal exeAPI, HostInfo.hLen
ReDim lesIP(i + 1) As Long
lesIP(i + 1) = IPv4Adr
Else
Exit For
End If
Next i
GetEveryIP = i + 1
Else
GetEveryIP = 0
End If
End Function
La boucle + le DoEvents ralentissent le prog mais le doevents c'est pour éviter que le prog plante vu le nombre de lettres à changer ...
Je n'ait pas éssayé ce que je dis mais je pense que ça doit fonctionner , si le pb du bug vient de la fonction String ...
Proger
Messages postés248Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention19 décembre 2008 24 mai 2002 à 18:44
Moi aussi je les ai essayé, et en utilisant un sniffeur de paquets pour vérifier si mon code envoyai bien 1500 octets... réponse affirmative! - et pour info, 1500 est probablement la taille de ton MTU, donc a mon avis tes 60ms sont un résultat normal. Essaye plutôt avec 5000 ou 6000 pour voir la différence.
Par la même occasion j'ai remarqué qu'en mettant des tailles de l'ordre de 2000-3000 octets, le programme renvoyai "0 ms" de ping. Le bug est corrigé, et à l'heure où j'écris, j'ai remis à jour le code ci-dessus et dans le zip.
Si tu envois un echo de taille vraiment énorme, ingérable par le prog, PingDef renverra "Err" .
pokbizou
Messages postés13Date d'inscriptionlundi 6 mai 2002StatutMembreDernière intervention13 novembre 2003 24 mai 2002 à 13:59
J'ai essayé tes modifications, mais les temps retournés ne sont pas ceux escomptés; je devrais recevoir des temps autour de 350 ms et je reçoie des temps autour de 60 ms. Est-ce vraiment la taille de l'echo que tu modifies avec cette fonction?
Merci d'avance
Proger
Messages postés248Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention19 décembre 2008 24 mai 2002 à 10:46
En modifiant la fonction EasyPing, (rajout du paramètre taille de l'echo) :
t$ = PingDef(ip$, 1500)
Function PingDef(Adresse As String, SzPing As Long) As String
Dim BadAdr As Long
Dim Tp As Long
Tp = GetEcho(GetIPofCible(Adresse), 2000, 128, String(SzPing, "A"), BadAdr)
Select Case Tp
Case -2
PingDef = "Err"
Case -1
PingDef = "Timeout"
Case Else
PingDef = Tp & " ms"
End Select
End Function
pokbizou
Messages postés13Date d'inscriptionlundi 6 mai 2002StatutMembreDernière intervention13 novembre 2003 24 mai 2002 à 09:03
peut-on modifier la taille du ping qui est de 32 octets par défaut? J'aimerai envoyer un ping de 1500 octets.
Comment faire?
Merci
21 août 2006 à 16:42
J'ai recherché sur le Net des informations sur une solution de remplacement, mais personne ne répond.
Si vous avez une nouvelle méthode, je suis preneur.
GOWAP
9 févr. 2005 à 21:30
30 août 2004 à 23:28
7 avril 2004 à 11:30
11 avril 2003 à 02:40
Good job Proger !
1 juil. 2002 à 17:44
HopeAddr = GetEcho(GetIPbinaryVal(Adresse), 10, CLng(i), "PINGECHO", CLng(HopeAddr))
et la compilation fonctionne.
28 juin 2002 à 16:32
Debogage :
à la ligne
HopeAddr = GetEcho(GetIPbinaryVal(Adresse), 10, i, "PINGECHO", HopeAddr)
la remplacer par
HopeAddr = GetEcho(GetIPbinaryVal(Adresse), 10, Clng(i), "PINGECHO", HopeAddr)
voila.
28 juin 2002 à 15:13
Quelqu'un d'autre a-t-il eu ce problème ?
22 juin 2002 à 12:14
Supposons : c'est le nom de la machine que tu appelles "la dns" ?
C'est le nom que Windows donne à la machine (sic : "nom de l'ordinateur"), ce n'est en aucun cas le nom dns !! C'est pour ca que ça ne marchera jamais avec mon code!
Un nom de machine ne peut être résolue qu'en réseau local (et uniquement si le protocole tcp/ip seul est activé...) donc oublie pour l'avoir sur internet.
Bref, pour ton problème, j'ai le regret de te dire que c'est quasiment impossible de retrouver l'adresse IP du gars sur internet en fonction du nom de sa machine. Voila tout. ("Quasiment", car il existe une solution, mais ça ressemble a du hack, alors chuuuut ;p )
13 juin 2002 à 09:47
c'que j'voudrais c a partir de la dns de qqn avoir son ip internet et pouvoir brancher un chat avec lui par exemple.
12 juin 2002 à 22:36
12 juin 2002 à 22:35
cela signifie que ta machine a plusieurs IP... houla! Malheureusement mon code renverra prioritairement la première adresse IP de la première carte réseau physique de la machine.
Bon, bon ok je vais rajouter la fonction qui va bien...
GetEveryIP (hostnam$, lesIP() As Long) As Long
'le début est comme GetIPofHost() (faites donc un copier-coller vous-même :p)
'renvoie la taille du tableau lesIP() avec une adresse IP type Long dedans
'lesIP() contiendra les IP de la machines. lesIP(1) contenant la première IP, etc.
If exeAPI <> 0
For i = 0 To 250 'on cherche jusqu'a 250 autres IP pour la même machine
RtlMoveMemory exeAPI, ByVal HostInfo.hAddrList + (i * 4), 4
If exeAPI <> 0 Then
RtlMoveMemory IPv4Adr, ByVal exeAPI, HostInfo.hLen
ReDim lesIP(i + 1) As Long
lesIP(i + 1) = IPv4Adr
Else
Exit For
End If
Next i
GetEveryIP = i + 1
Else
GetEveryIP = 0
End If
End Function
12 juin 2002 à 19:31
alwaysgetIP marche pas.
29 mai 2002 à 13:55
24 mai 2002 à 23:17
Tp = GetEcho(GetIPofCible(Adresse), 2000, sTTL, Space(SzPing), BadAdr)
Par contre le seul inconvénient c'est qu'il met des espaces à la place de tes A ... donc si ça peut jouer ... on peut faire autre chose ...
Dim BufferPing as String
BufferPing = Space(SzPing)
For i = 1 to len(BufferPing)
Mid(BufferPing, i, 1) = "A"
DoEvents
next i
Tp = GetEcho(GetIPofCible(Adresse), 2000, sTTL, BufferPing, BadAdr)
La boucle + le DoEvents ralentissent le prog mais le doevents c'est pour éviter que le prog plante vu le nombre de lettres à changer ...
Je n'ait pas éssayé ce que je dis mais je pense que ça doit fonctionner , si le pb du bug vient de la fonction String ...
24 mai 2002 à 18:44
Par la même occasion j'ai remarqué qu'en mettant des tailles de l'ordre de 2000-3000 octets, le programme renvoyai "0 ms" de ping. Le bug est corrigé, et à l'heure où j'écris, j'ai remis à jour le code ci-dessus et dans le zip.
Si tu envois un echo de taille vraiment énorme, ingérable par le prog, PingDef renverra "Err" .
24 mai 2002 à 13:59
Merci d'avance
24 mai 2002 à 10:46
t$ = PingDef(ip$, 1500)
Function PingDef(Adresse As String, SzPing As Long) As String
Dim BadAdr As Long
Dim Tp As Long
Tp = GetEcho(GetIPofCible(Adresse), 2000, 128, String(SzPing, "A"), BadAdr)
Select Case Tp
Case -2
PingDef = "Err"
Case -1
PingDef = "Timeout"
Case Else
PingDef = Tp & " ms"
End Select
End Function
24 mai 2002 à 09:03
Comment faire?
Merci