Может ли QTcpSocket выпустить свой дескриптор

Возможно ли, чтобы QTcpSocket выпустил свой дескриптор, чтобы владение сокетом могут быть переданы к другому объекту QTcpSocket в другом потоке или к QSslSocket, без закрытия / прерывания сокет?

socket1.setDescriptor(descriptor);

// .....

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

2

Решение

Нет, вы не можете освободить дескриптор сокета, если он был назначен QTcpSocket,

Но я не уверен, что тебе это понадобится. QTcpSocket обычно можно перенести в другой поток с moveToThread, ограничения такие же, как у любого перемещенного QObject:

  • moveToThread должен вызываться внутри потока, к которому в данный момент принадлежит объект,
  • у объекта не может быть родителя (вы можете удалить его с помощью theObject->setParent(0);или переместите родителя вместо объекта),

и потому что это QTcpSocketполучающий поток должен запустить цикл обработки событий или вам нужно использовать waitFor... функции в этой теме.

Эта заметка кажется, предполагает, что это работает только для сокетов, начиная с Qt 4.7.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]