TESTE LA CONNEXION INTERNET ET DIT QUOI FAIRE

yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017 - 5 juin 2006 à 09:05
p007tod76 Messages postés 1 Date d'inscription jeudi 8 juillet 2004 Statut Membre Dernière intervention 10 janvier 2011 - 10 janv. 2011 à 12:08
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/37959-teste-la-connexion-internet-et-dit-quoi-faire

p007tod76 Messages postés 1 Date d'inscription jeudi 8 juillet 2004 Statut Membre Dernière intervention 10 janvier 2011
10 janv. 2011 à 12:08
Bonjour
Je tombe par hasard (et bien tard sans doute sur ce post) mais à tout hasard ...

Il faut changer dans FormCreate
AdressesIP[2] := '212.27.32.5'; // Seconde adresse: IP du DNS de free.fr
par
AdressesIP[2] := '212.27.54.252'; // Seconde adresse: IP du DNS de free.fr
cincap Messages postés 460 Date d'inscription dimanche 5 décembre 2004 Statut Membre Dernière intervention 6 avril 2009 2
23 mars 2010 à 19:00
Bonsoir à toutes et à tous,

Je sais que c'est un peu tard par rapport au topic mais cela ne fonctionne pas logiquement sur Vista.

Le code se compile bien avec D6

Lors du test avec un modem routeur usb de marque Philips série 6000, le logiciel estime que la connexion "ordinateur modem" est Ok et par contre la connexion "modem internet" est corrompue, ce qui n'est pas correct en réalité.

Au cas ou quelqu'un aurait aussi détecté cette anomalie.

@+,

Cincap
cs_ekinoxjp Messages postés 43 Date d'inscription samedi 30 avril 2005 Statut Membre Dernière intervention 18 septembre 2011
4 août 2006 à 04:52
Merci pour la faute d'ortho, vais corriger ça ^^

Si non effectivement c'est bizzare que ça te dit ok alors que ça ne l'est pas. C'est étonnant, je n'arrive pas à produire cette erreure chez moi. Je suis derrière un modem routeur Netgear et ça marche aussi bien que sur le Zyxel de ma grand mère. Est-ce que tu as compilé le prog ou tu l'as piqué déjà tout prêt? Est-ce que tu reçois une réponse quand tu fait un ping sur 212.27.32.5 avec le cable d'ébranché ? Si ça se trouve ton modem répond à la place pour dire que c'est pas bon (étonnant mais j'aurais tout vu).
cs_mcapp Messages postés 71 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 15 décembre 2011
13 juin 2006 à 18:49
Bravo pour ce programme !
Une remarque : si je débranche mon modem-routeur SpeedTouch d'Aol, je n'ai plus la connexion internet. Pourtant ton programme annonce : internet OK.
Il décèle sans doute mon réseau local qui continue à fonctionner, mais ne devrait pas annoncer : Internet OK.
As-tu une réponse pour ce point ?
Autre remarque qui ne te vexera pas, je l'espère :
"Cliquer ici pour un diagnostique de la connection internet" s'écrit en réalité : "Cliquer ici pour un diagnostic de la connexion internet" (c'est seulement pour t'aider : faire encore plus sérieux et fini !)
Encore Félicitations !
Mcapp
cs_ekinoxjp Messages postés 43 Date d'inscription samedi 30 avril 2005 Statut Membre Dernière intervention 18 septembre 2011
12 juin 2006 à 13:47
Si je te le file compilé, tu ne pourra pas personnaliser les messages d'erreures.

J'ai donc fait une modif pour qu'on puisse modifier les messages d'erreures sans avoir besoin de compiler.

Et voici un lien pour télécharger le programme déjà compilé ;-)

http://ekkinoxx.free.fr/utilities/DiagnostiqueInternet.zip
cs_sergejb Messages postés 20 Date d'inscription mercredi 16 octobre 2002 Statut Membre Dernière intervention 12 juin 2006
12 juin 2006 à 09:47
Pour Marie-Candide
Ben oui il vaut mieux. Les exe ne figurent plus dans les zip (et c'est bien) pour cause de place, et autres inconvénients. Mais si tu veux un exe demande ça à EquinoxJp (avec un tit mail) qui se fera un plaisir sans doute.
Bises (et pas de craintes, nous avons tous nos mèches !)
Utilisateur anonyme
12 juin 2006 à 09:23
ah oui, ok, faut avoir delphi...
et si on a pas delphi, on ne peut pas avoir l'exe, donc...
(j'ai arrêté de faire des mèches blondes, mais je sens que ça blondit, ça blondit.... tout doucement...)
cs_sergejb Messages postés 20 Date d'inscription mercredi 16 octobre 2002 Statut Membre Dernière intervention 12 juin 2006
12 juin 2006 à 09:14
Pour Marie-Candide
Et ben tu compiles le projet avec D6 ou équivalent selon affinités.
Et tu ouvres l'exe obtenu.
Clin d'oeil !
Utilisateur anonyme
12 juin 2006 à 08:31
heu... je ne suis pas blonde, mais... une fois que j'ai téléchargé les 4 fichiers, je fais QUOI ?
cs_ekinoxjp Messages postés 43 Date d'inscription samedi 30 avril 2005 Statut Membre Dernière intervention 18 septembre 2011
6 juin 2006 à 20:50
Voilà le code source à été mis à jour :)

Serge, quel hasard,
ma Mamie est blonde.
Mort de rire ^^
cs_sergejb Messages postés 20 Date d'inscription mercredi 16 octobre 2002 Statut Membre Dernière intervention 12 juin 2006
6 juin 2006 à 10:36
Tout fonctionne bien, avec les derniers commentaires intégrés. J'ai un réseau local sur un modem routeur olitec SX200. Le test est correct, la détection des pannes aussi, le tout compilé en D6.
Très bonne source.Il n'y a pas que les grands parents qui peuvent être intêressés, je connais des blondes...! Bravo
cs_ekinoxjp Messages postés 43 Date d'inscription samedi 30 avril 2005 Statut Membre Dernière intervention 18 septembre 2011
6 juin 2006 à 10:03
wow Cirec! Tu cartones! ^^
Je ferais ces modifs dès que je rentre ce soir (Je suis au boulot en ce moment^^)
En tout cas joli travail :)
Tu m'as appris des astuces bien utiles, je te remerci beaucoup! ;-)
Utilisateur anonyme
6 juin 2006 à 03:36
Ben ouais ...
jamais deux sans trois (lol)

Dans les clauses Uses tu peux également retirer ces unités :

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, IdBaseComponent, IdComponent, IdRawBase, IdRawClient, IdIcmpClient
//celles qui suivent
{, IdUDPBase, IdUDPClient, IdDNSResolver};


Et aussi plus loin :
uses {Shellapi,} WinSock;

En tout cas ton code me plait je le trouve simpa, tu as fait l'éffort de commenter ton code ça c'est très bien.
Si tu nommais tes composants ta source serait encore plus facile à lire (pour toi comme pour nous)

Et pour finir la présentation a été soigné
pour toutes ces raisons et pour t'encourager à continuer
je met un 8/10

Bien, bonne continuation
@+
Cirec
Utilisateur anonyme
6 juin 2006 à 03:03
Dernière modification (je pense):-)

pour commencer sais-tu que tu peux initialiser les variables globales ?

...
var
Form1: TForm1;
Noms: array[1..2] of string = ('le modem', 'Internet');
AdressesIP: array[1..2] of string;
AdresseActuelle: integer = 1;

Implementation

...
// du coup dans OnCreate de la form :
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Clear;
{plus besoin d'initialiser AdresseActuelle}
//AdresseActuelle := 1; // 1.modem 2.internet
// Pour éviter d'écrire les choses deux fois, j'ai utilisé des tableaux
// On ping en premier le modem et ensuite sur Internet
{et plus besoin d'initialiser Noms}
//Noms[1] := 'le modem';
//Noms[2] := 'Internet';
AdressesIP[1] := IPduModem(IPconfig)+'1'; // Première adresse: ip du modem
AdressesIP[2] := '212.27.32.5'; // Seconde adresse: IP du DNS de free.fr
// Conseil: Mettre si possible une addresse ip au lieu d'un nom de domaine www
// ceci pour éviter des messages d'erreures lorsque celui-ci ne répond pas.
end;

{ensuite pour préserver l'affichage des couleurs jusqu'au bout
Il faut à nouveau déplacer la procédure ChangeCouleur(Etat:Boolean); pour la placer avant Timer1Timer
Et modifier le code comme suit :
}

// Affecte la couleur aux fils (vert ou rouge)
procedure ChangeCouleur(Etat:Boolean);
var
couleurs: Tcolor;
begin
if Etat then couleurs := clLime // vert
else couleurs := clRed; // rouge
// Affecte la couleur au fil actuel
//si modem est Ok et Internet non la ligne reste verte pour le modem
// avant ce n'était pas le cas
if AdresseActuelle = 1 then Form1.Label2.Color := couleurs
Else
Form1.Label3.Color := couleurs;
end;


// Effectue un ping
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := false;
ICMP.ReceiveTimeout := 3000;
try
ICMP.Host := AdressesIP[AdresseActuelle];
ICMP.Ping;
Application.ProcessMessages;
Except
on E: Exception do
Begin
Timer2.Enabled := False;
ChangeCouleur(False); // Affiche en rouge la non connection
pour connaitre le texte du message d'erreur activer la ligne suivante
// ShowMessage(E.Message);
MessageErreure;
End;
end;
end;


Ensuite peut tu expliquer le code suivant ?:
Var
sTime: string;
TempsDeReponse: integer;
begin
sTime := '';
//TempsDeReponse en 'ms'
TempsDeReponse := strtoint(Format('%s%d',[sTime,AReplyStatus.MsRoundTripTime]));

est ce bien utile de faire un transtypage ici ?

TempsDeReponse := AReplyStatus.MsRoundTripTime;
Devrait donner le même resultat

Voilà c'est tout

@+
Cirec
Francky23012301 Messages postés 400 Date d'inscription samedi 6 août 2005 Statut Membre Dernière intervention 11 février 2016 1
6 juin 2006 à 01:10
Salut,

Tout fonctionne : bon travail

A+ et merci pour la modif ;)
Utilisateur anonyme
6 juin 2006 à 00:49
Bon alors j'ai testé la nouvelle mouture
et maintenant le modem est détecté même si la connection à Internet n'est pas établie

Donc bravo tu as réussi

Du coup, francky, chez toi ça devrait également fonctionner

Mais voilà une petite ombre au tableau ;-)
le prog coince et ne se termine plus

J'ai donc apporté une petite modification au code que voici :

{La procédure MessageErreur n'avait pas de problème mais faut la déplacer avant la procédure TimerTimer pour pouvoir l'utiliser dans cette dernièrre}
// Messages d'erreurs
Procedure MessageErreure();
begin // Faire appel à unit1 n'est pas utile
Form1.Label1.Caption := 'Probleme avec '+{Unit1.}Noms[{Unit1.}AdresseActuelle]+' (cliquez ici pour tester à nouveau)';
// pas besoin de vider le Mémo SetTextBuf le fait
//Form1.Memo1.Clear;
// Si erreure à la tentative du modem
if AdresseActuelle < 2 then
Form1.Memo1.SetTextBuf('Solution:'+#13+#10+'Vérifier que le modem est bien allumé et que le cable est bien branché.'+#13+#10+'Si non redémarrer l''ordinateur.')
else // Si erreure à la tentative sur Internet
Form1.Memo1.SetTextBuf('Solution:'+#13+#10+'S''il y a une lumière orange sur le modem alors redémarrer l''ordinateur et le modem.'+#13+#10+'S''il n''y a pas de lumière orange, alors attendre 30 secondes qu''elle s''allume.'+#13+#10+'Si toujours pas de lumière orange alors vérifier que le modem est correctement branché à la prise téléphonique.');
end;


{Procédure Timer1Timer après MessageError}
// Effectue un ping
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := false;
ICMP.ReceiveTimeout := 3000;
try
ICMP.Host := AdressesIP[AdresseActuelle];
ICMP.Ping;
Application.ProcessMessages;
{Ici on change pour Except ce qui permet en cas d'erreur d'eviter que le prog frize on Disable les deux timers puis on affiche MessageErreur}
Except
Timer1.Enabled := False;
Timer2.Enabled := False;
MessageErreure;
end;
end;

Bonne prog

@+
Cirec
Utilisateur anonyme
5 juin 2006 à 23:45
Stooooooooop

Moi aussi j'ai un BeWan sur port USB et tout fonctionne

Donc c'est pas la bonne piste
@+
Cirec
cs_ekinoxjp Messages postés 43 Date d'inscription samedi 30 avril 2005 Statut Membre Dernière intervention 18 septembre 2011
5 juin 2006 à 23:31
Ah j'ai compris votre problème!
Enfin je le dévine ^^
C'est Francky qui m'a mis la puce à l'oreil. :)
Vous avez un Modem BeWan "en USB" (et non en Ethernet) et donc le modem ne répond pas aux pings.

Ce n'est pas un problème, car la fonction "ipconfig" (du programme) permet de deviner s'il le modem USB est allumé ou pas (si l'ipconfig retourne 127.0.0.1 alors le modem USB est éteint)

J'ai modifié le programme pour qu'il soit compatible avec les modems USB. J'espère que ça va marcher :)
cs_ekinoxjp Messages postés 43 Date d'inscription samedi 30 avril 2005 Statut Membre Dernière intervention 18 septembre 2011
5 juin 2006 à 22:28
hum,
Question toute simple, si elle ne l'est pas, dites-le ;-)

Quand vous faites un ping du modem dans la commande DOS est-ce que ça répond bien?

Si vous obtenez une réponse du ping, pourriez-vous me donner l'adresse IP du modem?

Je vais faire ce que je peux pour que ça fonctionne aussi chez vous :)
Utilisateur anonyme
5 juin 2006 à 16:16
Salut Francky,

Oui il me semble effectivement qu'on aient le même FAI
mais chez moi je dois établir la connection Internet pour pouvoir utiliser le programme, mais ça je pense que tu as déjà testé.

ps : Source compilé sous D2005 avec Indy10
@+
Cirec
Francky23012301 Messages postés 400 Date d'inscription samedi 6 août 2005 Statut Membre Dernière intervention 11 février 2016 1
5 juin 2006 à 15:31
Re,

Merci pour l'explication du timer ;)
Par contre j'ai un Modem BeWan aussi et le meme FAI que Cirec (je crois ^^) donc je comprends pas pk ca ne fonctionne pas

@+
cs_ekinoxjp Messages postés 43 Date d'inscription samedi 30 avril 2005 Statut Membre Dernière intervention 18 septembre 2011
5 juin 2006 à 12:58
Salut tout le monde!
Merci pour vos feedback, je vais essayer de répondre au mieux :)

Si la détection du modem ne fonctionne pas, je pense que soit le modem ne répond pas aux ping, soit l'adresse IP du modem est faussé par une autre carte réseau (est-ce que vous avez plusieurs cartes réseaux?). Dans ce cas, vous pouvez spécifier vous même l'adresse du modem dans la procedure FormCreate.

Pour Francky23012301 :)
J'ai plusieurs raisons pour lesquels j'ai utilisé un Timer, la première c'est pour garder la main sur le programme (si non tout Freeze), la seconde c'est pour qu'il puisse y avoir une petite animation en attendant la réponse du ping. A la limite, j'aurai pu utiliser un Thread :)

Pour cirec,
Si je test la connection Internet en fesant un ping sur un DNS de free, c'est parce que Papi et Mamie ont la chance d'avoir une femme de ménage qui vient une fois par semaine et qui arrache à chaque fois les fils du modem au téléphonne. Si je m'arrête seul au test du modem et n'effectue pas le test Internet, le programme ne sera pas en mesure de les aider à résoudre leur problème.

Je sais que si Papi et Mami m'appellent, ce ne sera pas pour des problèmes aussi basiques qu'un simple câble débranché (m'est déjà arrivé plusieurs fois). Voilà ;-)
Utilisateur anonyme
5 juin 2006 à 12:01
Salut,
Alors chez moi tout fonctionne très bien.
Modem BeWan

la seule chose que je trouve bizarre c'est qu'il ait besoin d'une connexion établie à Internet pour me dire que tout fonctionne ???? ;-)

L'outil de diagnostic fournis par mon F.A.I. me détecte mon modem et sans être connecté à Internet (sauf si un câble est débranché bien sûr)

Pour le code je regarderais plus tard

@+
Cirec
Francky23012301 Messages postés 400 Date d'inscription samedi 6 août 2005 Statut Membre Dernière intervention 11 février 2016 1
5 juin 2006 à 11:54
Salut,

Idem que Matt et pourtant la je suis entrain de t'écrire. Petit conseil : l'utilisation du Timer est inutile une simple boucle aurait fait l'affaire.

A+
Matt 261 Messages postés 1173 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 10 septembre 2011 3
5 juin 2006 à 10:38
Salut tout le monde,

moi j'ai un problème, je suis connecté à Internet via un modem donc jusque là OK mais quand je test si je suis connecté avec ton soft il me dit :
"Vérifier que le modem est bien allumé et que le cable est bien branché.
Si non redémarrer l'ordinateur." pourtant tout est bon (la preuve je suis entrain de mettre un commentaire sur ta source ;-) ).
cs_fjohnny Messages postés 46 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 18 septembre 2006
5 juin 2006 à 09:45
YvesSimon:
D'aprés ce que j'ai vu dans le code et l'explication qu'a donné ekinoxjp, si tu as une passerelle ou un routeur sur l'adresse x.y.z.1 (où x, y,z correspondent aux 3 premiers octects de ton adresse IP) alors la détection du modem sera OK. Par contre suivant la façon dont ton réseau Intranet est structuré (si tu as une connection directe à l'internet via ton réseau Intranet) alors la connection internet fonctionnera aussi.

Salutations.
yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017
5 juin 2006 à 09:05
Fonctionne-t-il sur un réseau intranet ?