QTcpServer 监听客户端一段时间后,client断开再连接,接收不到信号问题

tandizt 2016-03-20 07:46:43
QTcpServer 监听几个客户端一段时间后,client退出,并触发disconnected信号,但是时间长,就会出现新的client 显示连接上,但是Server没有接收到信号,QTimer也被堵塞,这种情况如何避免? 只能把监听的client分线程处理?
下面是接入Client并初始化。

void QGHTcpServer::incomingConnection(int socketDescriptor)
{
QTcpSocket *pSock = new QTcpSocket(this);
if (!pSock->setSocketDescriptor(socketDescriptor)) {
emit evt_SocketError(pSock,pSock->error());
return;
}else{
connect(pSock, SIGNAL(readyRead()),this, SLOT(new_data_recieved()));
connect(pSock, SIGNAL(disconnected()),this,SLOT(client_closed()));
connect(pSock, SIGNAL(error(QAbstractSocket::SocketError)),this, SLOT(displayError(QAbstractSocket::SocketError)));
connect(pSock, SIGNAL(bytesWritten(qint64)), this, SLOT(some_data_sended(qint64)));
m_clientList[pSock] = 0;
emit evt_NewClientConnected(pSock);
}
}
...全文
647 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
foruok 2016-03-21
  • 打赏
  • 举报
回复
可能你某个操作阻塞了QTcpServer所在线程的事件循环,查查有你代码里有没有产生阻塞的动作。
heiyedebing 2016-03-21
  • 打赏
  • 举报
回复
你只贴这一块代码什么也看不出来,全贴出来才可以看到原因
donwmufromdying 2016-03-21
  • 打赏
  • 举报
回复
估计问题出在QTimer所在线程是否在主线程了,导致堵塞了

16,213

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧