QTcpSocket客户端如何理解它在队列中?(并且不会进入连接状态)
How QTcpSocket client can understand that it is in the queue? (and does not go to connected state)
我正在使用Qt开发一个服务器和客户端项目。我想打印用户的连接状态。对于这个建议,我使用 state((,如下所示:
socketState = mySocket.state();
if (socketState == 3) {
Print("we have connected");
}
但是,当服务器对新连接进行排队时,它不起作用。为了清楚起见,即使服务器已暂停接受新连接,我的客户端状态也是 3:
//server side:
myServer->pauseAccepting();
//client side:
connectToHost()
socketState = mySocket.state();
现在套接字状态是 3 而不是 0 或队列状态的特殊数字。
总而言之,我想知道如何通知客户端它在队列中?有没有像 state(( 这样的东西有队列状态的返回值?
终于我找到了答案。
进入队列(按操作系统(的被拒绝的客户端与其他客户端没有什么不同。因此,我们可以为它制作一个特殊的套接字(这意味着它不再在队列中(并开始通信(通知并关闭(。
例如:
QTcpSocket clientSocket
QTcpSocket queueSocket
在我的项目中,服务器首先向队列客户端发送消息。消息是:
"我们不能接受新客户,因为我们不能处理多个客户"。所以,它知道问题是什么。
然后,服务器关闭队列客户端套接字。
我们应该关闭它,因为我们不想处理很多客户端。
但是,重点是我们可以与队列中的客户合作并决定如何处理他们。我宁愿接受它们只是为了通知和关闭它们。
if (we have NOT a client) {
work with clientSocket
}
else {
queueSocket.wirte("We can NOT accept a new client because we can NOT handle more than one")
close queueSocket
}
我希望它能帮助那些想要通知被拒绝的客户的人。
相关文章:
- 当套接字连接断开时检测C/C++Unix
- Constexpr替代了新的放置方式,可以让内存中的对象保持未初始化状态
- 我不断收到 [错误] ID 返回 1 退出状态错误,但看不到问题所在
- OSX MetalKit CVMetalTextureCacheCreateTextureFromImage失败,状态:
- 无法在windows上使用mingw将sqlite3与c连接
- 到连接组件算法的问题(递归)
- QTcpSocket在不阻塞GUI的情况下重新连接到服务器
- 无法在C++中建立与MySQL数据库的连接
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 在Qt Creator中,如何在连接到正在运行的进程后查看控制台输出
- std::future_error:无关联状态
- 连接 dockerized 模型和 dockerized 数据库时出现"无法 SQLConnect"错误
- 获取使用 Qt c++ 在 Linux 中通过 USB 连接的 ESC/POS 打印机的状态
- 从连接管理器中获取Wi-Fi连接状态
- QSql数据库超出范围后,连接仍处于打开状态
- QTcpSocket客户端如何理解它在队列中?(并且不会进入连接状态)
- 如何在C API中检查MySql连接是否处于活动状态
- Boost.MSM:通过连接伪状态退出正交区域
- 如何检查客户端是否仍处于连接状态c++
- 检查连接是否在libpqxx(postgres)中处于活动状态