Qt5 QTcpSocket派生类和QTcpServer



我正在开发一个应用程序,该应用程序将我的类封装在已实现的QTcpSocket上是有意义的(因为它是一个TCP协议,我需要能够尽可能轻松地使用原始套接字和添加的功能)。

因此,为了简单起见,我的代码结构如下:

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

对于QTcpServer,默认的nextPendingConnection()函数返回QTcpSocket的一个实例,我无法将其转换为MyTCPSocket(据我所知,QTcpSockets没有复制结构)。

我交这个最好的选择是什么?我想我可以创建一个新的MyTCPSocket,并简单地将套接字描述符设置为nextSendConnection()从MyTCPServer返回的描述符,但我不确定当旧套接字被删除时会如何工作。

有没有更好的方法来处理这种情况?

正是这样:重写incomingConnection,但不调用基类,而是创建QTcpSocket子类的实例并在其上使用setSocketDescriptor。如果你想保持QTcpSocket的"信号行为",也可以调用addPendingConnection并发出newConnection

然后将您从nextPendingConnection获得的套接字向下转换到QTcpSocket子类。

相关内容

  • 没有找到相关文章

最新更新