guepe J'ai du noir sur la truffe ? | J'ai une solution qui semble fonctionner, perso je trouve ca laid :
Code :
- unsigned short connectionMngr::getAvailablePort() const throw (connectionMngrException)
- {
- boost::asio::io_service io_service;
- udp::socket *socket = 0;
- unsigned short testPort = 1024; //start for non-root access :-)
- bool error = false, opened = false;
- while( testPort < 65000 && opened == false )
- {
- try
- {
- socket = new udp::socket(io_service, udp::endpoint(udp::v6(), testPort));
- } catch( ... ) //anything !
- {
- if( socket != 0 )
- delete socket;
- error = true;
- }
- if( error == true )
- {
- ++testPort;
- error = false;
- }
- else
- opened = true;
- }
- if( opened == true ) //port ok, close socket
- {
- socket->close();
- delete socket;
- }
- else //no port available ! Wow !!
- {
- ostringstream oss;
- oss<<"connectionMngr::getAvailablePort No available port found for handling connection !";
- throw connectionMngrException( oss.str() );
- }
- return testPort;
- }
|
---------------
Un blog qu'il est bien
|