Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2405 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  boost::asio : trouver un port libre ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

boost::asio : trouver un port libre ?

n°1940233
guepe
J'ai du noir sur la truffe ?
Posté le 13-11-2009 à 01:32:10  profilanswer
 

Je cherche une solution pour trouver un port libre sur une machine (et ouvrir une socket dessus)
Il y a la possibilité de faire un try..catch en essayant d'ouvrir une socket sur une liste de port, mais je trouve ca super crade.
 
Et mes recherches sur google ne m'ont rien donné. J'aimerai trouver une solution à travers boost, mais si c'est pas possible simplement tant pis.
 
Merci !


---------------
Un blog qu'il est bien
mood
Publicité
Posté le 13-11-2009 à 01:32:10  profilanswer
 

n°1940663
guepe
J'ai du noir sur la truffe ?
Posté le 13-11-2009 à 18:26:14  profilanswer
 

J'ai une solution qui semble fonctionner, perso je trouve ca laid :
 

Code :
  1. unsigned short connectionMngr::getAvailablePort() const throw (connectionMngrException)
  2. {
  3.   boost::asio::io_service io_service;
  4.   udp::socket *socket = 0;
  5.   unsigned short testPort = 1024;   //start for non-root access :-)
  6.   bool error = false, opened = false;
  7.   while( testPort < 65000 && opened == false )
  8.   {
  9.     try
  10.     {
  11.       socket = new udp::socket(io_service, udp::endpoint(udp::v6(), testPort));
  12.     } catch( ... )  //anything !
  13.     {
  14.       if( socket != 0 )
  15.         delete socket;
  16.       error = true;
  17.     }
  18.     if( error == true )
  19.     {
  20.       ++testPort;
  21.       error = false;
  22.     }
  23.     else
  24.       opened = true;
  25.   }
  26.   if( opened == true ) //port ok, close socket
  27.   {
  28.     socket->close();
  29.     delete socket;
  30.   }
  31.   else   //no port available ! Wow !!
  32.   {
  33.     ostringstream oss;
  34.     oss<<"connectionMngr::getAvailablePort No available port found for handling connection !";
  35.     throw connectionMngrException( oss.str() );
  36.   }
  37.   return testPort;
  38. }


---------------
Un blog qu'il est bien

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  boost::asio : trouver un port libre ?

 

Sujets relatifs
Compilation avec boostOù trouver des décorations pour le web?
boost time nanoseconds[VB] Lecture du port série
[Boost::random] Template comme argument d'une fonction...[Boost::asio] Acces a des donnees bas niveau
Analyse lexicale & syntaxique avec Boost::SpiritTrouver un l'indicatif le plus proche en SQL
Trouver les doublons sur Excel 
Plus de sujets relatifs à : boost::asio : trouver un port libre ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR