我编了一个小程序,实现心跳和校时功能,使用了QTcpSocket的read、write、waitForReadyRead、waitBytesWriten等函数,可是每次read的时候都要等待,直到下一个write到来才进行,整个程序由此被拖延了不少,校时功能可以慢上20几分钟,愁死我了,这是哪里的问题,那位高手能指点一下?
if(!this->waitForReadyRead()){
printf("waitForReadyRead error\n");
qDebug()<<"error="<<this->errorString();
return -1;
}
int re = this->read(... ...);
re = this->write(... ...);这样写对吗?
if(!this->waitForBytesWritten()){
printf("waitForBytesWritten error\n");
qDebug()<<"error="<<this->errorString();
return -1;
}
------最佳解决方案--------------------
可以参考Qt的TCP示例
------其他解决方案--------------------
看样子你的read函数是阻塞的,没有读到数据就一直阻塞的,如果不想这样那你就把socket设置为非阻塞的。