[Interest] Odd behavior with QTcpSocket::waitForReadyRead()

Bob Hood bhood2 at comcast.net
Tue Dec 20 00:38:30 CET 2016


I'm porting a TCP/IP client from wxWdigets to Qt.  I've tried this under both 
5.4.2 and 5.6.2.

I have a user-configured timeout value for network reads.  The default is 300 
seconds (5 minutes).  I am feeding that to QTcpSocket::waitForReadyRead(), and 
it's basically ignoring--worse, it's generating an error.  It doesn't seem to 
matter if it's 300,000 msecs or 3,000,000 msecs, I get "Network operation 
timed out" (5) returned from it.

         int msecs = timeout * 1000000;
         if(!socket.waitForReadyRead(msecs))
         {
             QString msg = QString(tr("An error occurred while receiving data 
from the server: \"%1\" (%2).")).arg(socket.errorString()).arg(socket.error());
             ...

This causes the communications to fail, even though the action takes place 
pretty much instantly, because I'm running the server on the same machine for 
testing/debugging.  If I tell QTcpSocket::waitForReadyRead() to wait forever:

         if(!socket.waitForReadyRead(-1))

everything runs smoothly.

I've done nothing with the QTcpSocket instance in terms of configuration.  I 
just create it, and then start the ball rolling with a call to 
connectToHost().  Have I not configured some Qt5-thing correctly?



More information about the Interest mailing list