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 :

Vérifier si un port tcp est ouvert


Sujet :

Delphi

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut Vérifier si un port tcp est ouvert
    salut

    avant de poster, j'ai fais une recherche sur le forum et les seuls réponses que j'ai trouvé avait pour but principal de tester des connexions avec un composant socket ...

    j'aimerais savoir s'il y a moyen sans passer par un composant client_socket

    sans avoir non plus coder un scanner de port

    c'est pour ma machine donc, pas de firewall, rien qui pourrait bloquer

    le but est de tester du port 3000 à 3050 le 1er qui est ouvert, pour pouvoir l'utiliser

    l'application sera utiliser plusieurs fois à plusieurs moment et donc il me faudra ouvrir d'autres ports (que ceux que j'ai déjà ouvert)

    merci

  2. #2
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    En quoi ça te dérange l'utilisation d'un clientsocket ?
    ça sert à ça !
    Sinon tu peux surement passer par une commande DOS style :
    >telnet <IPAdress> <Numero du port>

  3. #3
    Membre éclairé
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Points : 709
    Points
    709
    Par défaut
    Ou nmap pour quelquechose de plus sofisticated !

  4. #4
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut
    la méthode avec un compo socket risque de prendre du temps non ?

    ce que je veux faire c'est ouvrir un port sur le pc, sauf que le port en question est peut être déjà ouvert par un autre socket

    c'est pourquoi je veux un truc simple, rapide, et efficace surtout, car je ne dois pas prendre un port déjà utilisé

  5. #5
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Tu veux dire prendre du temps en dev ou en temps machine ?
    Si c'est en dev...regarde chez ICS c'est simple à implémenter avec plein d'exemples.
    http://www.overbyte.be/frame_index.h...ducts/ics.html
    Si c'est du temps machine je vois pas pourquoi.

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 763
    Points : 13 381
    Points
    13 381
    Par défaut
    Prendre beaucoup de temps sur LocalHost, je ne pense pas.
    Maintenant, pourquoi ne pas essayer d'ouvrir simplement le premier et en cas d'échec passer au suivant. Le test serait implicite.

    Edit:
    Salut Phil

  7. #7
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut
    oui finalement, j'ai opté pour votre idée, en essaynt d'ouvrir et d'attendre l'évènement "on error"

    Citation Envoyé par Andnotor Voir le message
    Prendre beaucoup de temps sur LocalHost, je ne pense pas.
    Maintenant, pourquoi ne pas essayer d'ouvrir simplement le premier et en cas d'échec passer au suivant. Le test serait implicite.
    wai c cool

    quand le port est déjà ouvert, l'évènement "on error" se déclenche donc je passe au port suivant, mais quand rien ne se déclenche ? (car il n'y a pas d'évènement "on ok" lol) je fais comment pour connaitre le bon port ?

    la seule solution que j'ai trouvé pour le moment, c'est de lancer un timer à 5 seconde; s'il y a error le timer se coupe, si le timer n'est jamais coupé et donc que les 5 sec sont passé alors, on a trouvé le port libre ?

    ça fonctionne, mais je voulais savoir ce que vous en pensez, car peut être qu'il y a une solution plus propre ?

  8. #8
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut
    plus personne ?

    j'ai essayé avec le compo socket, je trouve pour un seul pot, après je ne sais pas pourquoi, je n'arrive plus à utiliser ma procédure ... peut être qu'il y a une "remise à 0" du socket à réaliser ?

  9. #9
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 290
    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 290
    Points : 1 941
    Points
    1 941
    Par défaut
    Peux-tu mettre une partie de ton code?

  10. #10
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut
    j'ai utilisé le compo Tserversocket, mais je pense qu'on peut le faire avec n'importe :

    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
     
    var
      port_trouve : boolean;
      le_port : integer;
    begin
      ServerSocket1.Close;
      le_port := 4000;
      port_trouve := false;
     
      While port_trouve = false do
      begin
        ServerSocket1.port := le_port;
        WATCPServer1.Port :=inttostr(le_port);
     
        try
          port_trouve := true;
          ServerSocket1.Open;
        except
          inc(le_port);
          port_trouve := false;
        end;
     
      end;
     
      showmessage((inttostr(le_port));
    end;
    ça l'air bon, mais ça ne fonctionne qu'avec le 1er port ouvert, et si je relance le teste (pour ouvrir un autre) ça ne fonctionne pas

    sans doute un problème d'initialisation que je ne fais pas à chaque début de teste ?

  11. #11
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 374
    Points : 3 152
    Points
    3 152
    Par défaut
    Bonjour,

    ta fonction trouve toujours le premier port non ouvert à partir du n° 4000 ?

    Elle fait la même chose à chaque fois si tu le refermes.

    Ce n'est pas ce que tu veux ?

    A+

    Charly

  12. #12
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut
    une fois trouvé, il lance une appli serve avec le port libre trouvé ...

    du coup le prochain teste ne peut pas être ce même port

  13. #13
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 770
    Points
    2 770
    Par défaut
    pourquoi pas utilisé Clientsocket au lieu de TServersocket, pour chercher les port libre??

  14. #14
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut
    je ne sais pas ... on m'a conseillé d'ouvrir le port ... et peut être que j'aurai le même problème ?

Discussions similaires

  1. Vérifier si un port est ouvert
    Par gronaze dans le forum Windows XP
    Réponses: 4
    Dernier message: 12/10/2011, 15h44
  2. Vérifier si un port donné est ouvert
    Par asnaeb dans le forum C#
    Réponses: 7
    Dernier message: 22/03/2011, 10h13
  3. Savoir si un Port TCP est utilisé
    Par Dan972 dans le forum C#
    Réponses: 4
    Dernier message: 31/07/2010, 22h50
  4. Vérifier si un fichier Excel est ouvert.. mais par cette session
    Par Godzestla dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 16/05/2008, 11h28
  5. 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

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