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 :

Comment savoir si un port est disponible ?


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 107
    Par défaut Comment savoir si un port est disponible ?
    salut,

    comment faire pour savoir très simplement si un port est ou non utilisé, pour tester sa disponibilité en gros.


    merci

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 086
    Par défaut
    Com, Parallèle, USB, TCP, ... plein de ports, plein d'API
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 107
    Par défaut
    désolé, je parlais du TCP

    bon j'ai fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    if serversocket1.Active then
      serversocket1.Active:=false;
    try
      serversocket1.Port:=strtoint(edit1.text);
      serversocket1.Active:=true;
      showmessage('oui');
    except
      showmessage('non');
    end;
    end;

    ça à l'air de marcher bien, si vous voyez quelque chose à modifier ou si vous avez une solution plus simple je suis prenneur

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 086
    Par défaut
    un ServerSocket va ouvrir le port pour que des clients puissent s'y connecter ... normalement un firewall devrait faire échouer l'ouverture, d'ailleurs, un autre ServerSocket déjà ouvert devrait faire de même ...

    maintenant, tout dépend ce que tu veux faire, si c'est pour faire un transfert de fichiers simultanés, autant géré toi même dans ton programme ta table des ports que tu utilises, et si tu crainds que d'autres applications te piques tes ports, tu peux effectivement faire ce code et renseigner ta table de port dans un thread par exemple, pour ne pas bloquer l'application en permanence pour le test de port ...

    Sinon Active est déjà à true, c'est qu'il est disponible et ouvert par ton objet, non ? donc pourquoi le faire pour le réouvrir ???

    Pour une question de lisibilité, j'utilise Open et Close, ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 107
    Par défaut
    Citation Envoyé par ShaiLeTroll
    Sinon Active est déjà à true, c'est qu'il est disponible et ouvert par ton objet, non ? donc pourquoi le faire pour le réouvrir ???
    si tu veux parler de ceci :
    if serversocket1.Active then
    serversocket1.Active:=false;

    c'est parce que je faisais plusieurs tests, et si le programme m'indiquait "oui" et que je voulais tester autre chose, il fallait désactiver le server


    sinon comment est-ce que tu aurais fais avec open et close ?

    (dans mon projet, le client communique déjà avec le serveur (on exclue donc ici le problème du firewall), et je veux ouvrir un autre port, donc je demande au serveur d'executer ce code pour vérifier qu'un port est disponible)

  6. #6
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 086
    Par défaut
    Ah, en gros ton programme discute avec son client sur le port 20000, et tu veux libérer la place pour d'autres clients, donc tu routes ce client sur un autre port comme le 20001 et tu veux savoir avant si il est dispo, effectivement à part tenter d'ouvrir le socket, je ne connais pas les api qui test le port simplement, j'ouvre et si ça plante c'est que bloquer ou déjà pris ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. Savoir si un caractère est disponible sur un port Com
    Par Flow_75 dans le forum Débuter
    Réponses: 2
    Dernier message: 09/03/2010, 17h34
  2. 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
  3. [Access] Comment savoir qu'un champs est vide ?
    Par Oberown dans le forum ASP
    Réponses: 9
    Dernier message: 25/10/2004, 10h47
  4. Unix - Comment savoir si un fichier est ouvert
    Par freddyboy dans le forum C
    Réponses: 7
    Dernier message: 06/10/2004, 15h53
  5. Comment savoir qu'une fonction est standard ?
    Par D[r]eadLock dans le forum C
    Réponses: 5
    Dernier message: 24/03/2003, 14h42

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