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

 Delphi Discussion :

Scanner le port 81 et montrer l'IP existante !


Sujet :

Delphi

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 420
    Points : 1 325
    Points
    1 325
    Par défaut Scanner le port 81 et montrer l'IP existante !
    Bonjour à toutes et à tous,

    Je recherche le moyen de vérifier l'adresse Ip qui est sur le port 81 pour pouvoir l'utiliser dans une application de videoparlophone qui fonctionne sur ce port.

    J'utilise Seven et Delphi6.

    Voici mon test qui ne fonctionne pas l'application ne répond pas :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, IdAntiFreezeBase, IdAntiFreeze, IdBaseComponent,
      IdComponent, IdTCPConnection, IdTCPClient;
     
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Edit1: TEdit;
        Button2: TButton;
        Edit2: TEdit;
        Memo1: TMemo;
        IdTCPClient1: TIdTCPClient;
        IdAntiFreeze1: TIdAntiFreeze;
        procedure Button1Click(Sender: TObject);
        procedure IdTCPClient1Connected(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure FormActivate(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
      P : Integer;
      po : string ;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    P:= 1;                      // Port min
    repeat
    with IdTCPClient1 do
        begin
        Host := edit1.Text;     // L'IP biensur
        Port := P;
        Str(P, po);
        P := P + 1;            // Incrementation des ports
        Edit2.Text := po;      // Affiche les ports en cours de scan
          try
          Connect(500);
     
          except
          on E : Exception do  // Pour les Ports non-ouverts.
             begin
             po := '';         // Permet d'afficher dans memo1 que les ports ouverts
             end;
          end;
          Memo1.Text := Memo1.Text + po;
          end;
      until P = 65500  // Port max
    end;
     
    procedure TForm1.IdTCPClient1Connected(Sender: TObject);
    begin
    IdTCPClient1.Disconnect;   // Deconnecter si port ouvert
    end;
     
    procedure TForm1.Button2Click(Sender: TObject);
    begin
    application.Terminate;
    end;
     
    procedure TForm1.FormActivate(Sender: TObject);
    begin
    Memo1.clear;
    end;
     
    end.
    Les composants ne sont pas renommés pour le test.

    Merci de votre aide au cas ou il y aurait une façon de faire.

    @+,

    cincap

  2. #2
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Points : 1 448
    Points
    1 448
    Par défaut
    T'es sur qu'elle ne repond pas ? moi je pense qu'elle travaille, la fin de ta boucle est au max au bout de 65500*500ms = 9h ... donc je pense que ta boucle tourne simplement

    Citation Envoyé par cincap Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    P:= 1;                      // Port min
    repeat
    ...
          P := P + 1;            // Incrementation des ports
          Connect(500);
     ...
      until P = 65500  // Port max
    end;

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 420
    Points : 1 325
    Points
    1 325
    Par défaut
    @ guillemouze, merci de ton intervention, ce que je voulais dire c'est que l'application indiquait dans la barre de titre quelle ne répondait pas et donc ne trouvait pas mon videoparlophone qui est branché sur le port 81.

    Je ne sais pas si je me suis bien fait comprendre, j'aimerai taper dans le champ d'un Tedit intitulé "Port" "81" et dans un Tmemo afficher les IP qui utilise ce port.

    Je continue aussi à chercher.

    @+,

    cincap

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 671
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 671
    Points : 13 065
    Points
    13 065
    Par défaut
    On a compris et c'est bien dû à ta boucle.

    Windows affiche cet avertissement lorsque le programme ne vide pas sa pile de messages pendant un certain temps (une quinzaine de secondes).
    Ajoute Application.ProcessMessages dans la boucle ou déporte-la dans un thread secondaire. Ça te permettra aussi de voir apparaître quelque chose dans le mémo

    Cela dit, pourquoi tester 65000 ports si seul le 81 t'intéresse ?

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 420
    Points : 1 325
    Points
    1 325
    Par défaut
    @Andnotor, merci pour ta suggestion.

    J'ai testé et j'ai mis 100 ports au lieu de 65000 mais je suis apparemment obligé de taper dans le Tedit1 l'Ip que je connais de mon videoparlophone pour avoir une info.

    Dans ce cas à 22 dans le Tedit2 il affiche dans le Tmemo 23 et à 80 il affiche 81 dans le Tmemo c'est peut être les deux ports qui sont ouvert ?

    Ors le but est de pouvoir rechercher l'Ip du matériel qui utilise le port 81 en tapant uniquement le port 81 dans un Tedit.

    @+,

    cincap

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 844
    Points : 11 274
    Points
    11 274
    Billets dans le blog
    6
    Par défaut
    le but est de pouvoir rechercher l'Ip du matériel qui utilise le port 81
    il faut donc scanner les IP, et non les ports...

    L'appareil dont on cherche l'IP est-il sur le même réseau privé que le PC qui exécute l'application à sa recherche ?

    Si c'est le cas, connaissant l'adresse du PC et le masque de sous-réseau, on doit pouvoir balayer par ping les adresses possibles sur le réseau, puis tenter de se connecter sur le port 81 aux adresses qui ont répondu au ping (en éliminant le routeur ?).
    Delphi 5 Pro - Delphi 10.4 Rio 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 !

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 420
    Points : 1 325
    Points
    1 325
    Par défaut
    @ tourlourou, merci de ta réponse,

    L'appareil dont on cherche l'IP est-il sur le même réseau privé que le PC qui exécute l'application à sa recherche ?
    Bien entendu, le videoparlophone est bien sur le même réseau.

    Son Ip avec l'application sur l'IPhone est détectée par un scan

    Sur le Pc on peut vérifier la vue de ce videoparlophone en tapant son IP et le port.

    Ce que je recherche pour mon application c'est de pouvoir choisir le videoparlophone d'après le port qui est connu d'avance soit le 81 en effet je pourrai avoir deux videoparlophone ou deux caméras sur le même port mais avec une Ip différente.

    @+,

    cincap

  8. #8
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 671
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 671
    Points : 13 065
    Points
    13 065
    Par défaut
    Citation Envoyé par cincap Voir le message
    choisir le videoparlophone d'après le port qui est connu d'avance soit le 81
    Donc pourquoi fais-tu varier le port
    C'est l'adresse (Host) qui doit évoluer. En admettant un réseau en 192.168.0.x :

    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
    with IdTCPClient1 do
    begin
      Port := 81;
     
      for i := 1 to 255 do
      begin
        Host := Format('192.168.0.%d', [i]);
     
        try
          Connect(500);
          Memo1.Lines.Add(Host +' : oui');
        except
          Memo1.Lines.Add(Host +' : non');
        end;
     
        Application.ProcessMessages;
      end;
    end;

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 420
    Points : 1 325
    Points
    1 325
    Par défaut
    Bonjour à toutes et à tous,

    @ Andnotor grand merci pour cette solution qui m'agrée amplement.

    En effet dès que le message qui apparait dans le Tmemo, je l'affiche dans le champ du Tedit concernant l'Ip du matériel sur le port 81.

    Je vais pouvoir dériver à ma guise cette solution car si deux videoparlophones sont sur ce port 81 je devrai choisir lequel que j'ai envie d'utiliser.

    J'étais parti sur une solution avec IdStack mais avec cette solution, je trouvais l'Ip publique derrière un routeur et l'Ip locale.

    Je ferme le Topic.

    @+,

    cincap

  10. #10
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 420
    Points : 1 325
    Points
    1 325
    Par défaut
    Excusez moi, j'avais juste une question concernant la boucle, dès que le scan est fini s'arrête t'elle et peut on relancer le scan ?

    Merci d'avance,

    @+,

    cincap

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 420
    Points : 1 325
    Points
    1 325
    Par défaut
    Bonjour à toutes et à tous,

    Okay tout est en ordre avec le code de Andnotor, il me suffisait de déconnecter IdTCPClient1.

    Encore merci pour votre aide.

    @+,

    cincap

  12. #12
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 420
    Points : 1 325
    Points
    1 325
    Par défaut
    Bonjour à toutes et à tous,

    Désolé de revenir sur ce code car en faisant des tests j'ai remarqué que je n'avais pas tous le matériel branché sur le port 80 ou 34567 ou 81.

    En effet, j'ai deux caméras, l'Ip d'une est détectée par exemple 192.168.1.10 et l'autre 192.168.1.25 ne l'est pas.

    En modifiant le port de 81 à 34567, l'Ip d'une est détectée par exemple 192.168.1.10 et l'autre 192.168.1.25 ne l'est pas.

    En vérifiant la configuration dans le logiciel des caméras, les deux Ip sont exactes ainsi que le port.

    Y a t'il une raison que je n'arrive pas à cernée.

    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
     
    with IdTCPClient1 do
    begin
      Port := strtoint(edport.text);//81;
     
      for i := 1 to 50 do
      begin
        Host := Format('192.168.0.%d', [i]);
     
        try
          Connect(500);
          Memo1.Lines.Add(Host +' : oui');
        except
          Memo1.Lines.Add(Host +' : non');
        end;
     
        Application.ProcessMessages;
      end;
    disconnect;
    end;
    @+,

    cincap

  13. #13
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 671
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 671
    Points : 13 065
    Points
    13 065
    Par défaut
    Celle qui n'est pas accessible utilise sans doute le protocole UDP.

  14. #14
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 420
    Points : 1 325
    Points
    1 325
    Par défaut
    @ Andnotor,

    Merci pour ta réponse :

    Celle qui n'est pas accessible utilise sans doute le protocole UDP
    Etonnant c'est la même configuration dans le logiciel Golbong propre aux caméras mais je veux bien le croire car je n'ai pas trouvé d'autres raisons.

    A moins que ...N. B. une est en Wifi et celle qui n'est pas vue est raccordée en Rj45.

    @+,

    cincap

  15. #15
    Membre éprouvé
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Points : 1 072
    Points
    1 072
    Par défaut
    Bonjour,

    à mon avis il te manque une boucle supplémentaire pour ces IP
    tu recherches 192.168.1.25 avec comme masque de recherche 192.168.0.%d
    ça ne peut pas fonctionner
    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
    with IdTCPClient1 do
    begin
      Port := strtoint(edport.text);//81;
      for J := 0 to 1 do 
      for i := 1 to 50 do
      begin
        Host := Format('192.168.%d.%d', [J, i]);
     
        try
          Connect(500);
          Memo1.Lines.Add(Host +' : oui');
        except
          Memo1.Lines.Add(Host +' : non');
        end;
     
        Application.ProcessMessages;
      end;
    disconnect;
    end;
    Cordialement,
    @+

  16. #16
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 420
    Points : 1 325
    Points
    1 325
    Par défaut
    Bonsoir à toutes et à tous,

    @ Cirec,

    Merci pour ton aide, le scan trouve uniquement la 1ère caméra comme avant.

    Il trouve le videoparlophone sur le port 81 comme avant.

    Les deux caméras sont sur le port 34567 (Tcpport) et dirigée sur le port 80 (Httpport) et une seule caméra est détectée soit l'Ip 192.168.1.10

    Merci quand même je pense que la liaison en Rj 45 pourrait causer ce problème.

    Maintenant ce qui comptait c'était de trouver l'Ip du videoparlophone et c'est fait.

    @+,

    Cincap

    P. S. j'avais oublié de dire que j'avais modifié le critère de recherche soit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    begin
        Host := Format('192.168.1.%d', [i]);

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 844
    Points : 11 274
    Points
    11 274
    Billets dans le blog
    6
    Par défaut
    Même si les 2 réseaux WiFi et Ethernet partagent la même plage d'IP, je me demande s'ils ne sont pas "imperméables" et que le scan ne limite donc pas aux seuls appareils sur le même réseau physique (câblé ou ondulé) que celui auquel est relié le PC.
    Qu'en serait-il sur un PC utilisant une carte Ethernet et une carte WiFi ? Il faudrait pouvoir diriger vers telle ou telle carte réseau.
    Delphi 5 Pro - Delphi 10.4 Rio 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 !

  18. #18
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 420
    Points : 1 325
    Points
    1 325
    Par défaut
    @ tourlourou,

    Merci de ta participation, avec le logiciel de scan livré avec les deux caméras, il les trouves et elles sont bien référenciées avec leur Ip déjà communiquées.

    Donc soit en Wifi ou en Rj45, elles existent sur le port 34567 dirigé sur le port 80.

    Maintenant mon topic ne concernait que pour le videoparlophone sur le port 81 car pour ce matériel il n'existe qu'une application pour Gsm.

    Donc le code donné par Andnotor fonctionne correctement.

    Même chose pour le code remanié par Cirec.

    Merci à tous les deux.

    @+,

    cincap

  19. #19
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 420
    Points : 1 325
    Points
    1 325
    Par défaut
    Bonjour à toutes et à tous,

    Voila une info utile il me semble !

    En effet, soucieux de trouver le pourquoi, j'ai débranché la caméra reconnue avec l'ip qui se termine par 10 et surprise le scan me trouve l'ip de la caméra qui se termine par 25.

    Ensuite, j'ai débranché la caméra reconnue avec l'ip qui se termine par 25 et surprise le scan me trouve l'ip de la caméra qui se termine par 10.

    Donc apparemment le scan trouve la 1ère Ip sur le matériel branché sur le même port même si un autre matériel est branché avec une ip supérieure.

    Dans ce modèle de configuration il faudrait peut être ajouter un champ pour la recherche sur le masque de réseau (Subnet Mask) ou autres (Gateway).

    @+,

    cincap

  20. #20
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 671
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 671
    Points : 13 065
    Points
    13 065
    Par défaut
    Tu avais toi-même donné la réponse non ?

    Citation Envoyé par cincap Voir le message
    ...il me suffisait de déconnecter IdTCPClient1.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Débutant] Scanner les ports
    Par yohan.fay dans le forum Débuter
    Réponses: 11
    Dernier message: 26/04/2006, 22h39
  2. Scanner les ports Traceroute
    Par yohan.fay dans le forum Web & réseau
    Réponses: 2
    Dernier message: 07/04/2006, 19h13
  3. [Socket/C++] Scanner de ports
    Par ThibG dans le forum Développement
    Réponses: 2
    Dernier message: 01/01/2006, 13h03
  4. [IdTCPClient] Comment scanner des ports en multithread ?
    Par Ren97 dans le forum Composants VCL
    Réponses: 17
    Dernier message: 26/07/2005, 13h21
  5. Scanner de ports / Composants SVP....
    Par Ren97 dans le forum Composants VCL
    Réponses: 5
    Dernier message: 19/07/2005, 15h55

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