如何知道有多少客户端使用Qt连接到我的服务器

时间:2017-10-06 09:59:38

标签: c++ qt embedded

我正在开发嵌入式设备,我有一个生成网络的WiFi模块,因此我的设备可用作服务器/热点。 我遇到了这个问题,我怎么知道有多少客户端连接到我的网络?

3 个答案:

答案 0 :(得分:1)

听起来就像计算connected信号的数量减去disconnected信号的数量一样简单。

答案 1 :(得分:1)

在添加新连接时定义变量+1,在其中一个连接断开时定义-1

更好的方法是让套接字(客户端)的QList轻松访问和管理它们。

像这样获取客户端:

client = nextPendingConnection();
qDebug() << client->peerAddress().toString();

答案 2 :(得分:1)

您可能真正想知道的是,您的应用有多少活跃用户已连接。不计算其他网络软件或卡住/挂起的应用程序的实际连接。

我建议如下:

  • 对于从客户端收到的每个命令,您可以添加/更新Map条目
  • 此映射条目将套接字描述符作为键,将时间戳作为值。
  • 现在,您可以定期重新检查地图并删除过旧的条目。

QMap :: count()为您提供已连接和活动客户端的数量。

作为进一步改进,您还可以将信号附加到socket :: disconnect()信号,并立即从地图中删除该条目,而无需等待超时。