Qt5 Производный класс QTcpSocket и QTcpServer

Я разрабатываю приложение, которое имело смысл, что я обернул свои классы вокруг реализованного QTcpSocket (так как это протокол TCP, и я должен иметь возможность использовать необработанный сокет и добавленные функции как можно проще).

Итак, для простоты мой код структурирован так:

class MyTCPSocket : public QTcpSocket
{
Q_OBJECT
// ....
}

class MyTCPServer : public QTcpServer
{
Q_OBJECT
// ....
}

А с QTcpServer функция nextPendingConnection () по умолчанию возвращает экземпляр QTcpSocket, который я не могу привести к MyTCPSocket (насколько я знаю, QTcpSocket не имеет структуры копирования).

Какой мой лучший вариант для передачи этого? Я думал, что мог бы создать новый MyTCPSocket и просто установить дескриптор сокета на тот, который возвращен nextPendingConnection () из MyTCPServer, но я не был уверен, как это будет работать, когда старый сокет будет удален.

Есть ли лучший способ справиться с этой ситуацией?

0

Решение

Именно это: переопределить incomingConnection но не вызывайте базовый класс, вместо этого создайте экземпляр вашего QTcpSocket подкласс и использование setSocketDescriptor в теме. Если вы хотите сохранить QTcpSocket «поведение сигнала», также вызовите addPendingConnection и излучать newConnection,

Тогда просто опусти сокет nextPendingConnection к вашему подклассу QTcpSocket.

1

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

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

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