首页 > 代码库 > QT5.3无法自动调用incomingConnection函数的问题(4.7没有这个问题)
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:\Qt\Qt5.3.2\Examples\Qt-5.3\network\threadedfortuneserver可以查看下
http://www.cnblogs.com/luoxiang/p/4730215.html
QT5.3无法自动调用incomingConnection函数的问题(4.7没有这个问题)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。