QTcpSocket可以释放它的描述符

时间:2013-01-23 18:16:05

标签: c++ qt qtcpsocket

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

socket1.setDescriptor(descriptor);

// .....

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

1 个答案:

答案 0 :(得分:2)

不,一旦将套接字描述符分配给QTcpSocket,就无法释放它。

但我不确定你是否需要。 QTcpSocket通常可以移动到moveToThread的另一个帖子,约束与移动的QObject相同:

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

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

This note似乎表明这仅适用于自Qt 4.7以来的套接字。