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

Entrée/Sortie Java Discussion :

[Socket] Comment déterminer un port libre?


Sujet :

Entrée/Sortie Java

  1. #1
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 321
    Points : 360
    Points
    360
    Par défaut [Socket] Comment déterminer un port libre?
    Bonjour,

    Etant en train de developper une petite application client/serveur utilisant le protocole tcp je souhaiterais que mon client puisse se connecter au serveur en utilisant un port libre du systeme. En java, je ne vois vraiment pas comment effectuer cela, pour l'instant je n'ai que la possibilité de fxer un port, tenter une connexion et faire cela tant que j'ai des exceptions provoquées par le fait que le port est déja occupé.

    Si quelqu'un a une solution je l'en remercie d'avance !

  2. #2
    Membre expérimenté
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Points : 1 403
    Points
    1 403
    Par défaut
    Salut,

    mais si tu n'impose pas un port, comment fera ton client pour savoir ou se connecter ?

    -----------------------------------------------
    Steve Hostettler
    ze_key@hotmail.com / www.zekey.net
    Steve Hostettler
    est ton ami(e) et le tag aussi.

  3. #3
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut Re: [Socket] Comment déterminer un port libre?
    Citation Envoyé par leyee
    pour l'instant je n'ai que la possibilité de fxer un port, tenter une connexion et faire cela tant que j'ai des exceptions provoquées par le fait que le port est déja occupé.
    A mon avis, il n'y a que cette solution : même en dehors de Java, il n'y a pas d'autres moyens de faire, hormis faire un netstat pour repérer un port serveur libre et le passer en paramètre à la JVM.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  4. #4
    Membre habitué
    Avatar de guipom
    Inscrit en
    Janvier 2003
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 207
    Points : 184
    Points
    184
    Par défaut
    Citation Envoyé par ze_key
    Salut,

    mais si tu n'impose pas un port, comment fera ton client pour savoir ou se connecter ?

    -----------------------------------------------
    Steve Hostettler
    ze_key@hotmail.com / www.zekey.net
    Tout à fait c'est quand même le principe d'un serveur de se trouver sur un port ou le client sait qu'il le trouvera !

    A moins que tu ais une idée derrière la tête, comme du broadcast du serveur pour informer du port qu'il a choisi, je ne vois pas bien où tu veux en venir.

    Sinon plutôt que de s'embeter à chercher un port libre, tu fais une boucle sur un range de ports, et au premier libre tu le prends. Je ne pense pas que ca ira moins vite que faire un appel externe et capture les infos pour trouver un port libre.

  5. #5
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par guipom
    Sinon plutôt que de s'embeter à chercher un port libre, tu fais une boucle sur un range de ports, et au premier libre tu le prends. Je ne pense pas que ca ira moins vite que faire un appel externe et capture les infos pour trouver un port libre.
    C'est certain que ça ira plus vite, et en plus, faire un netstat pour récupérer un port de libre suppose qu'on dispose d'un langage de script OS évolué (pas Windows, donc...). C'est une suggestion pour déterminer le port à l'extérieur du programme et disposer d'un moyen de le connaître "facilement".

    Pour le broadcast, c'est pas idiot, mais encore faut-il que les clients soient à l'écoute à ce moment-là. Si la plage de ports est fixe et connue, on peut imaginer que le client parcourt également cette plage de ports et effectue une "séquence de vérification" (une sorte de hand shaking) avec le serveur pour s'assurer qu'il a accrocher le port de l'application.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  6. #6
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Et là le firewall de crier "Warning port scan type attack!"...

    Non sans blague, comme indiqué tenter d'ouvrir tous les ports un par un et s'arrêter au premier ouvrable semble être la seule solution portable.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

Discussions similaires

  1. Comment connaitre la liste des ports libres?
    Par sofien dans le forum Sécurité
    Réponses: 3
    Dernier message: 04/08/2008, 10h45
  2. Réponses: 8
    Dernier message: 22/06/2008, 08h12
  3. Comment obtenir des ports libres ?
    Par ataya dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 23/05/2006, 12h02
  4. [Socket] Trouver un port libre rapidemment
    Par chicorico dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 20/05/2005, 15h49
  5. Comment déterminer la fin d'un message sur le port serie ?
    Par zeddy23 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 11/01/2005, 05h12

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