2

QTcpSocket 是否可以释放其描述符,以便可以将套接字的所有权转移到不同线程上的另一个 QTcpSocket 对象或 QSslSocket,而无需关闭/中断套接字?

socket1.setDescriptor(descriptor);

// .....

descriptor = socket1.descriptor();
socket1.release();                       // <--- Is there a way to do this?
socket2.setSocketDescriptor(descriptor);
4

1 回答 1

2

不,一旦将套接字描述符分配给QTcpSocket.

但我不确定你是否需要。QTcpSocket通常可以将 移动到另一个线程,moveToThread约束与任何移动相同QObject

  • moveToThread应该在对象当前所属的线程内调用,
  • 对象不能有父对象(您可以使用 删除它theObject->setParent(0);,或移动父对象而不是对象),

并且因为它是 a QTcpSocket,所以接收线程应该运行一个事件循环,或者您需要使用该waitFor...线程中的函数。

该注释似乎表明这仅适用于 Qt 4.7 以来的套接字。

于 2013-01-24T00:56:41.623 回答