From: Marek P. <ma...@us...> - 2002-03-14 00:08:46
|
Update of /cvsroot/javaprofiler/library/src/commun In directory usw-pr-cvs1:/tmp/cvs-serv325/src/commun Modified Files: communSocket.cpp Log Message: randomized socket port selection Index: communSocket.cpp =================================================================== RCS file: /cvsroot/javaprofiler/library/src/commun/communSocket.cpp,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -r1.13 -r1.14 *** communSocket.cpp 6 Mar 2002 18:00:38 -0000 1.13 --- communSocket.cpp 14 Mar 2002 00:08:43 -0000 1.14 *************** *** 64,75 **** sockaddr_in sin; sin.sin_family = AF_INET; - sin.sin_port = htons( port); sin.sin_addr.s_addr = htonl( INADDR_ANY); #ifdef WIN32 - if( _failed = (bind( _sock, (sockaddr*)&sin, sizeof( sin)) == SOCKET_ERROR)) return; if( _failed = (listen( _sock, 1) == SOCKET_ERROR)) return; #else - if( _failed = (bind( _sock, (sockaddr*)&sin, sizeof( sin)) < 0)) return; if( _failed = (listen( _sock, 1) < 0)) return; #endif --- 64,102 ---- sockaddr_in sin; sin.sin_family = AF_INET; sin.sin_addr.s_addr = htonl( INADDR_ANY); + srand( (unsigned)time( NULL)); + + int n = 0; + do { + + sin.sin_port = htons( port); + + #ifdef WIN32 + _failed = (bind( _sock, (sockaddr*)&sin, sizeof( sin)) == SOCKET_ERROR); + #else + _failed = (bind( _sock, (sockaddr*)&sin, sizeof( sin)) < 0); + #endif + + if( _failed) { + + port = 5000+rand()%10000; + n++; + } + } while( _failed && n < 10); + + if( _failed) return; + + if( port != _port) { + + cerr << "WARNING: default port not available !!!" << endl; + cerr << "WARNING: listening on port " << port << endl; + + _port = port; + } + #ifdef WIN32 if( _failed = (listen( _sock, 1) == SOCKET_ERROR)) return; #else if( _failed = (listen( _sock, 1) < 0)) return; #endif |