QTcpSocket是否可以释放其描述符,以便可以将套接字的所有权转移到另一个线程上的另一个QTcpSocket对象,或者转移到QSslSocket,而不关闭/中断< / strong>套接字?
socket1.setDescriptor(descriptor);
// .....
descriptor = socket1.descriptor();
socket1.release(); // <--- Is there a way to do this?
socket2.setSocketDescriptor(descriptor);
答案 0 :(得分:2)
不,一旦将套接字描述符分配给QTcpSocket
,就无法释放它。
但我不确定你是否需要。 QTcpSocket
通常可以移动到moveToThread
的另一个帖子,约束与移动的QObject
相同:
moveToThread
theObject->setParent(0);
删除它,或者移动父级而不是对象),并且因为它是QTcpSocket
,接收线程应该运行事件循环,或者您需要在该线程中使用waitFor...
函数。
This note似乎表明这仅适用于自Qt 4.7以来的套接字。