zoukankan      html  css  js  c++  java
  • QT5.3无法自动调用incomingConnection函数的问题(4.7没有这个问题)

    最近将qt4.7的一个工程移到5.3,遇到了几个麻烦事,主要是这个incomingConnection监听后无法自动调用的问题,在4.7上是完全没有问题的,到了5.3就不行,网上也查了下,网友们都是放出问题,然而都没有写出解决。

    1.一步解决

    我之前是这样写的:

    复制代码
    void TFTPxServer::incomingConnection(int socketDescriptor)
    {
        qDebug() << "incomingConnection...";
    
        TFTPxThread *thread = new TFTPxThread(socketDescriptor);
        //deleteLater会释放线程
        connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
    
        thread->start();
    }
    
    int TFTPxServer::startListen()//通过调用这个函数达到自动进入incomingConnection开启新线程,然而在QT5.3这并没有什么卵用。
    {
        if(!this->listen(QHostAddress::Any, TFTPX_PORT))
        {
            m_strErrMsg = QString("TFTPxServer Listen Fail.");
            return T_SOCKET_LISTEN_FAIL;
        }
    
        qDebug() << "listen success.";
    
        return T_SUCCESS;
    }
    复制代码

    后来我尝试了下不用内部函数去监听,而是用TFTPxServer的对象直接监听,把上面的startListen()干掉,外部直接这样就可以了:

    复制代码
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    
        serverInit();
    }
    复制代码
    复制代码
    int MainWindow::serverInit()
    {
        m_server = new TFTPxServer(this);
    
        if(!m_server->listen(QHostAddress::Any, TFTPX_PORT))
        {
            ui->TextBrowseServerStatus->append("后台服务器已启动,监听失败!!!");
            return T_SOCKET_LISTEN_FAIL;
        }
      return T_SUCCESS;
    }
    复制代码

     大家也可以参考自带的demo:C:QtQt5.3.2ExamplesQt-5.3 etwork hreadedfortuneserver可以查看下

    http://www.cnblogs.com/luoxiang/p/4730215.html

  • 相关阅读:
    内存、时间复杂度、CPU/GPU以及运行时间
    内存、时间复杂度、CPU/GPU以及运行时间
    四叉树问题
    四叉树问题
    基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【三】VGG网络进行特征提取
    爬楼梯问题种种
    爬楼梯问题种种
    Python 在线笔试
    基于深度学习的人脸识别系统(Caffe+OpenCV+Dlib)【二】人脸预处理
    标准模板库 STL 使用之 —— vector 使用 tricks
  • 原文地址:https://www.cnblogs.com/findumars/p/6009478.html
Copyright © 2011-2022 走看看