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
|