IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web & réseau Delphi Discussion :

[FMX] Comment savoir si je suis connecté a internet et l'adresse IP


Sujet :

Web & réseau Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 658
    Billets dans le blog
    65
    Par défaut [FMX] Comment savoir si je suis connecté a internet et l'adresse IP
    Bonjour,
    Problématique : j'ai affaires à des pc nomades (windows/mac) et je voudrais savoir s'ils sont connectés à l'usine (sur le réseau local donc) ou à l'extérieur
    (donc programme FMX XE8)

    Comment puis-je le savoir?
    j'ai pensé à :
    - un simple ping sur le serveur ne me parait pas suffisant, même s'il y a peu de chance de pinger la même adresse à l'extérieur
    - un test sur l'adresse fixe fournie par le FAI me paraitrait plus fiable mais comment écrire ça j'en ai aucune idée
    (INDY, ICS ... je ne vois même pas quel composant utiliser dans ces deux suites)

    Des pistes à me fournir ?

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 658
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    voici ce que j'ai tenté
    pour l'accès internet , simple , le bon vieux test sur google.fr qui a parfaitement fonctionné le samedi et ne fonctionne plus depuis dimanche

    ---------------------------
    Notification des exceptions du débogueur
    ---------------------------
    Le projet ProjectIP.exe a déclenché la classe d'exception EIdNotASocket avec le message 'Erreur de socket n° 10038
    Opération socket sur cible non-socket.'.
    correspondant a un problème de timeout je pense, voilà la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
      function CheckInternet: boolean;
      begin
        result:=false;
        try
        IdTCPClient1.ReadTimeout:=2000;
        IdTCPClient1.ConnectTimeout:=2000;
        IdTCPClient1.Port:=80;
        IdTCPClient1.Host:='google.fr';
        IdTCPClient1.Connect;
        IdTCPClient1.Disconnect;
        result:=true;
        except
        result:=false;
        end;
      end;
    pour l'adresse FAI je me suis dit (le samedi) qu'il me suffisait alors de récupérer une page web genre whatsmyip et là encore, ce devait être un dimanche noir !
    j'ai bien réception des données (taille mais avec un memorystream impossible de les afficher dans un mémo .
    NOTA : Avec un TFileStream j'ai les infos
    C'est une première ce genre d'affichage pour moi (utilisation d'un MemoryStream -> Memo), donc il y a certainement un bout de code manquant ou autre ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     function getip : boolean;
      var FS : TMemoryStream;
      begin
        try
         FS:=TMemoryStream.Create();
         IdHTTP1.Get('http://www.monwhois.fr/',FS);
         result:=fs.size>0; 
         if result then Memo1.Lines.loadfromStream(FS); //erreur affichage blanc !!!
         finally
          FS.Free;
        end;
      end;

  3. #3
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 938
    Billets dans le blog
    6
    Par défaut
    Bonjour Serge, il faut pê d'abord réinitialiser la position du curseur du flux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if Result then
    begin
      FS.Position:=0;
      Memo1.Lines.LoadFromStream(FS);
    end;
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 658
    Billets dans le blog
    65
    Par défaut
    Re,

    une fonction qui me renvoi le truc correct (je n'ai lu le post de tourlourou qu'en écrivant ce post ! )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    function getip : String;
       var FS : TMemoryStream;
           SR : TStreamReader;
           Content : String;
           EndPosition,BeginPosition : integer;
      begin
        try
         FS:=TMemoryStream.Create();
         IdHTTP1.Get('http://www.monwhois.fr/',FS);
         FS.Position:=0;
         SR:=TStreamReader.Create(FS);
         result:='******';
         while not (SR.EndOfStream) do
          begin
            Content := SR.ReadLine;
            if Content.Contains('<b>Votre adresse IP est :') then
             begin
               beginposition:=pos(':',Content)+1;
               EndPosition:=posex('</b>',content);
               result:=Trim(Copy(Content,beginposition,EndPosition-beginposition));
               break;
              end;
          end;
         finally
           FS.Free;
           SR.Free;
        end;
      end;
    j'attends vos critiques/optimisations (je n'ai pas encore vérifié s'il y a fuites mémoires) et reste le problème pas de connexion internet (timeout idhttp ?)
    s'il y a mieux (certainement) je suis toutes ouïes

  5. #5
    Membre Expert
    Avatar de Thierry Laborde
    Homme Profil pro
    N/A
    Inscrit en
    Avril 2002
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : N/A

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 391
    Par défaut
    Bonjour,

    Pour le test de la connexion internet, pourquoi ne pas utiliser la fonction InternetGetConnectedState ?

  6. #6
    Membre Expert
    Avatar de Thierry Laborde
    Homme Profil pro
    N/A
    Inscrit en
    Avril 2002
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : N/A

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 391
    Par défaut
    Je viens de me rendre compte que le message initial parlait de PC et Mac, donc ma proposition ne peux pas aller car c'est seulement du Windows.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment savoir si je suis connecté au réseau local
    Par zanoubya dans le forum Débuter
    Réponses: 4
    Dernier message: 18/10/2010, 16h03
  2. Comment savoir si je suis connecte ?!?!
    Par Juanes dans le forum Qt
    Réponses: 2
    Dernier message: 21/07/2009, 00h50
  3. Comment savoir si je suis vraiment connecté sur internet ou pas
    Par imparator_42 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 04/03/2009, 11h46
  4. Comment savoir si je suis bien connecté à la base ?
    Par gg9595 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 21/03/2007, 15h16
  5. comment savoir si je suis admin d'un poste?
    Par Samanta dans le forum Windows XP
    Réponses: 4
    Dernier message: 26/04/2005, 14h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo