c++ - Making a client in Qt that tries to connect to server, and if it fails, it keeps trying until it connects -


i'm using qtcpsocket program.

void mainwindow::connectfunction() {      socket->connecttohost(ip, port);     if(socket->waitforconnected(2000))     {            qtime time = qtime().currenttime();          ui->textbrowser->append('[' + time.tostring("h:m") + "] connection successful.");     }     else     {         qtime time = qtime().currenttime();         ui->textbrowser->append('[' + time.tostring("h:m") + "] connection failed. retrying...");         connectfunction();     }  } 

i attempt connect server ui->connecttohost(ip, port). if connection fails, call connectfunction() again restart connecting process. should until connection successful. problem arises when call connectfunction(). crashes program, , don't know why. appreciated.

the problem calling connectfunction recursively , if connection fails many iterations, encounter stack-overflow error. 1 alternate solution have connectfunction slot , call in queued way prevent recursion:

void mainwindow::connectfunction() {      socket->connecttohost(ip, port);     if(socket->waitforconnected(2000))     {            qtime time = qtime().currenttime();          ui->textbrowser->append('[' + time.tostring("h:m") + "] connection successful.");     }     else     {         qtime time = qtime().currenttime();         ui->textbrowser->append('[' + time.tostring("h:m") + "] connection failed. retrying...");         qmetaobject::invokemethod(this, "connectfunction", qt::queuedconnection );     } } 

there other possible solutions implementing in asynchronous way , starting timer invokes connecting periodically when error occurred.


Comments

Popular posts from this blog

angularjs - ADAL JS Angular- WebAPI add a new role claim to the token -

php - CakePHP HttpSockets send array of paramms -

node.js - Using Node without global install -