Qt - 如何将QTCPSocket添加到QTCPServer

时间:2017-01-27 08:48:57

标签: multithreading qt qtcpsocket qtcpserver

我有一个简单的多线程应用程序,就像Qt网站上的示例"Threaded Fortune Server Example"一样。

当我的 QTCPServer 收到传入连接时,我创建 QRunnable 任务,传递 socketDescritptor ,然后将其提交给 QThreadPool

void Server::incomingConnection(qintptr socketDescriptor)
{
    Task *task = new Task(socketDescriptor, this);
    this->m_pool->start(task);
}

然后在Task方法run()中创建套接字:

void Task::run()
{
    QTcpSocket tcpSocket;
    if (!tcpSocket.setSocketDescriptor(socketDescriptor)) {
        emit error(tcpSocket.error());
        return;
    } 
...
}

但是,我阅读了关于 QTCPServer incomingConnection 方法的说明  来自Qt Doc

  

注意:如果在重新实现此方法时创建了另一个套接字,则需要通过调用addPendingConnection()将其添加到Pending Connections机制。

     

注意:如果要将传入连接作为新的QTcpSocket处理   另一个线程中的对象你必须将socketDescriptor传递给   其他线程并在那里创建QTcpSocket对象并使用它   setSocketDescriptor()方法。

所以,我的问题是:

  • 如何添加从另一个创建的套接字 线程到服务器的挂起连接?
  • 这是需要的操作吗?

谢谢,

0 个答案:

没有答案