Qt笔记-解决QSocketNotifier: Multiple socket notifiers for same socket xxx and type Read问题
Posted IT1995
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt笔记-解决QSocketNotifier: Multiple socket notifiers for same socket xxx and type Read问题相关的知识,希望对你有一定的参考价值。
Qt中的socket有个descriptor的概念,这个descriptor就代表socket。
报这个错误是因为,你程序里面2个socket都绑了同一个descriptor。所以出现了问题。
我的遇到的是这样的。
①
void QSSLServer::incomingConnection(qintptr socketDescriptor)
{
QSslSocket *sslSocket = new QSslSocket(this);
......
......
......
addPendingConnection(sslSocket);
}
addpending相关:
这里如果用信号与槽就必须这样用
void QSSLServer::rx()
{
QTcpSocket* clientSocket = qobject_cast<QTcpSocket*>(sender());
.......
.......
//再发一条数据
clientSocket->write("Hello Client");
}
而不能
QTcpSocket tcpSocket;
tcpSocket.setSocketDescriptor(num);
②
在多线程的服务端中不要再调用addPendingConnection,直接在此处调用连接池。在线程中直接进行TCP相关的操作。
以上是关于Qt笔记-解决QSocketNotifier: Multiple socket notifiers for same socket xxx and type Read问题的主要内容,如果未能解决你的问题,请参考以下文章
文件更改句柄,QSocketNotifier 由于无效套接字而禁用
Qt笔记-QTcpSocket跨线程调用(官方推荐方法,非百度烂大街方法)
Qt笔记-解决QSslSocket中QWaitCondition: Destroyed while threads are still waiting问题