//===================================================================================== bool Client::Connect( const wxIPV4address& address ) { wxSocketClient* socketClient = new wxSocketClient( wxSOCKET_NOWAIT ); socket = new Socket( socketClient ); // Try once before throwing up the progress dialog. socketClient->Connect( address, false ); if( socketClient->WaitOnConnect( 1, 0 ) && socketClient->IsConnected() ) return true; wxString hostName = address.Hostname(); int tryCount = 0; int maxTries = 10; wxString progressMessage = wxT( "Connecting..." ); wxGenericProgressDialog progressDialog( wxT( "Connecting to host: " ) + hostName, progressMessage, maxTries, wxGetApp().GetFrame(), wxPD_APP_MODAL | wxPD_CAN_ABORT ); while( tryCount < maxTries ) { socketClient->Connect( address, false ); if( socketClient->WaitOnConnect( 1, 0 ) && socketClient->IsConnected() ) return true; tryCount++; if( tryCount == maxTries ) progressMessage = wxT( "Connection attempt failed!" ); bool cancel = !progressDialog.Update( tryCount, progressMessage ); if( cancel ) break; } return false; }