如何自动检测其他人是否正在使用互联网

如何自动检测其他人是否正在使用互联网

我有一个任务会消耗大量的互联网带宽。通常我只会在路由器中设置 QoS 设置,但我当前的路由器没有此功能,而且无法更换。因此,我想控制带宽密集型任务的运行时间,以免影响正常使用。

互联网有 3 个潜在用户,2 个使用 Android 手机,1 个使用 iPhone。所有设备似乎都会响应 ping,因此我可以设置一个脚本来监控这些设备是否在家中。但是,我读到过,现代智能手机可能会在闲置期间关闭 wifi,而且我们也有固定的互联网访问设备(三星智能电视),这可能是唯一可以访问互联网的设备。此外,即使 ping 100% 的时间都有效,也会有一段很长的时间,当每个人都在睡觉时,任务可以运行。

我们的日程安排是随机的,因此设置定时时间表是行不通的。

我希望尽可能不打扰地完成这项工作,即不在手机上安装应用程序,也不在可能被视为“丑陋”的房间中添加硬件,但除了手动打开和关闭任务外,我不知道该怎么做。我不介意编写自己的脚本,但我不知道我可以使用什么作为输入。

我们的 Cogeco 路由器确实有“运动传感器”来检测存在,但似乎没有用于此的 API。

答案1

然而,我读到一些文章说现代智能手机可能会在不活动时关闭 Wi-Fi

如果他们处于不活跃期,那么实际上就意味着互联网未被积极使用因此您可以将其视为“人不在场”。

通常我只是在路由器上设置 QoS 设置,

您仍然可以在运行任务的机器上设置流量整形,将其限制为 WAN 连接总容量的 80% 等。

下载数据时,高带宽使用率通常不会对普通网页浏览或视频流产生重大负面影响。如果确实如此,那么除了“大量带宽消耗”之外,还有其他问题。

(对于 Linux 上的 TCP,也许可以将连接设置为使用 TCP-LP 拥塞控制算法 - 它对其他用户的影响较小 - 但即使是默认值也应该表现得“公平”。)

如果你是上传大量数据 – 将其限制为可用上传量的 80% 以解决 QoS 不足的问题(为 TCP ACK 等留出一些空间)。

如何自动检测其他人是否正在使用互联网

我想到两种方法:

  1. 您的家用路由器可能支持 UPnP IGD,以便应用程序自动进行端口转发。此协议还包括 WAN 监控 -upnpc -l或者upnpc -L会向您显示当前“发送/接收的字节数”,如果您以一秒为间隔进行两次测量,您将获得近似的“MB/s”利用率,并且您将能够看到是否有人在进行视频通话或类似操作。

  2. 许多家庭互联网连接都受到 Bufferbloat 的严重影响,大量使用会导致延迟大幅增加(这可能是您的高带宽任务对其他用户产生如此负面影响的原因)。您实际上可以利用这一点,监视器您知道附近某个主机的延迟(可能是托管在同一 ISP 的 DNS 服务器)——如果延迟突然增加,则意味着有人正在大量使用网络。

    此方法无法帮助您检测游戏等少量但对延迟敏感的流量,但至少可以检测大量的上传/下载。

相关内容