QTcpServer監(jiān)聽(tīng)客戶(hù)端一段時(shí)間后,client斷開(kāi)再連接,接收不到信號(hào)問(wèn)題
發(fā)表于2019-05-10
回復(fù):0
查看:8766 |
QTcpServer 監(jiān)聽(tīng)?zhēng)讉€(gè)客戶(hù)端一段時(shí)間后,client退出,并觸發(fā)disconnected信號(hào),但是時(shí)間長(zhǎng),就會(huì)出現(xiàn)新的client 顯示連接上,但是Server沒(méi)有接收到信號(hào),QTimer也被堵塞,這種情況如何避免? 只能把監(jiān)聽(tīng)的client分線(xiàn)程處理?
下面是接入Client并初始化。
<pre class='brush: cpp'>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);
}
}</pre>
登錄 慧都網(wǎng)發(fā)表評(píng)論