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 :

Tester si le port 80 est bloqué ou non avec Indy ou autres !


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 Tester si le port 80 est bloqué ou non avec Indy ou autres !
    Bonjour à toutes et à tous,

    Cela fait longtemps que je ne me suis plus connecté à cause de soucis de santé.

    Serait t'il possible avec Indy et Delphi de vérifier si le port 80 est bloqué ou non.

    J'ai testé des fonctions sans résultat possible.

    Voici un lien qui permet de le faire par Internet :

    http://www.yougetsignal.com/tools/open-ports/

    En vous remerciant d'avance,

    @+,

    Cincap

  2. #2
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Quelle est l'utilisation que tu veux en faire? Les solutions et les contraintes de tests ne sont pas les mêmes en fonction de ta réponse.
    Normalement avec un TIdTCPClient ça doit se faire correctement
    - pour tester un port en localhost : il faut
    • port ouvert

    - pour tester un port sur un réseau local: il faut
    • règle de firewall l'autorisant
    • port ouvert

    - pour tester un port sur une adresse IP externe:il faut
    • lancer le test à partir d'une autre connexion
    • règle de firewall l'autorisant
    • port ouvert
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  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
    Bonjour à toutes et à tous,

    @ Linkin, merci de ta réponse.

    En fait Belgacom bloque le port 80 entre autres par défaut mais permet dans les Eservices du client de le débloquer.

    Depuis 3 jours en changeant de modem, mon système de surveillance par caméras ne fonctionne plus et donc plutôt de me connecter sur mes Eservices, j'aurai aimé pouvoir avec un petit module vérifier si le port 80 est fermé ou ouvert.

    Voici le code de mon test mais j'obtiens une exception "Erreur E/S 105).

    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
     
    uses
      Winsock;
     
     function PortTCPIsOpen(dwPort : Word; ipAddressStr:string) : boolean;
        var
          client : sockaddr_in;//sockaddr_in is used by Windows Sockets to specify a local or remote endpoint address
          sock   : Integer;
        begin
            client.sin_family      := AF_INET;
            client.sin_port        := htons(dwPort);//htons converts a u_short from host to TCP/IP network byte order.
            client.sin_addr.s_addr := inet_addr(PChar(ipAddressStr)); //the inet_addr function converts a string containing an IPv4 dotted-decimal address into a proper address for the IN_ADDR structure.
            sock  :=socket(AF_INET, SOCK_STREAM, 0);//The socket function creates a socket 
            Result:=connect(sock,client,SizeOf(client))=0;//establishes a connection to a specified socket.
        end;
     
     
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      ret    : Integer;
      wsdata : WSAData;
    begin
      Writeln('Init WinSock');
      ret := WSAStartup($0002, wsdata);//initiates use of the Winsock
      if ret<>0 then exit;
      try
        Writeln('Description : '+wsData.szDescription);
        Writeln('Status      : '+wsData.szSystemStatus);
     
        if PortTCPIsOpen(80,'127.0.0.1') then showmessage('Le port 80 est ouvert !')
         //Writeln('Open')
        else
        //Writeln('Close');
        showmessage('Le port 80 est fermé !')
      finally
      WSACleanup; //terminates use of the Winsock
      end;
     
    end;
    @+,

    Cincap

  4. #4
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    L'erreur E/S 105 est due au WriteLn, je suppose que tu fais une application VCL et non une application console.

    Remplace les par des showmessage.

    Le code fonctionne bien.
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  5. #5
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    attention, ton code permet de vérifier qu'il y a un service sur le port 80 local, mais pour savoir s'il est accessible depuis Internet il faut faire le test...depuis Internet

    il te faut par exemple un serveur web en PHP qui fait juste un accès HTTP

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <?php
      echo file_get_content('http://'.$_SERVER['REMOTE_ADDR']);

    il ne te reste plus qu'à invoquer le script depuis ta connexion et il tentera en retour d'ouvrir la port 80 de ton adresse IP publique.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    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
    @ Linkin et @ Paul TOTH, merci de vos réponses.


    @ Linkin :

    Remplace les par des showmessage.
    En examinant mon code, j'avais bien remplacé par un "showmessage" d'où l'exception.

    @ Paul TOTH, je vais donc annuler cette demande car le lien que j'avais mis dans le 1er message fait le nécessaire rapidement dans le sens de ta suggestion :

    http://www.yougetsignal.com/tools/open-ports/

    Pour le débloquer, il me suffit de me rendre dans mes Eservices.

    Merci à tous,

    Cincap

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

Discussions similaires

  1. tester un radio s'il est coché ou non
    Par geeksDeve dans le forum jQuery
    Réponses: 2
    Dernier message: 22/04/2012, 03h31
  2. Tester si un port TCP est ouvert
    Par Melodie dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 03/03/2008, 09h06
  3. Tester si un port est bloqué via Dos
    Par justgreat dans le forum Sécurité
    Réponses: 10
    Dernier message: 06/04/2007, 01h41
  4. tester un composant si il est créé ou non
    Par ouldfella dans le forum Composants VCL
    Réponses: 18
    Dernier message: 15/08/2006, 14h32
  5. comment savoir si un port est bloqué
    Par sony351 dans le forum Dépannage et Assistance
    Réponses: 6
    Dernier message: 30/06/2006, 17h08

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