我用QTcpSocket去连接服务器。
如果服务器没有打开,那就用个定时器不断重连。
每次连接,都会
sock = new QTcpSocket(this);
sock->connectToHost("127.0.0.1", 1234);
connect(sock, SIGNAL(disconnected()), this, SLOT(disconnected()));
connect(sock, SIGNAL(error(QAbstractSocket::SocketError)),
this, SLOT(error(QAbstractSocket::SocketError)));
然后由于服务器没有开启,所以会收到error信号。
在error信号里面:
sock->close();
sock->deletelater();
但是打开任务管理器,会看到这个进程的句柄数在不断增加,明明调用了close方法和deletelater,还是这样。
这个socket的运行的线程不在主线程,是单独的线程。
有人知道是什么原因,应该怎么处理吗?谢谢了
Qt QTcpSocket
------解决方案--------------------
可能是你定时器重连速度大于你应答超时删除速度,建议把定时重连设为一个合理的时间试试