有没有办法在Windows和Windows之间以便携方式从C ++程序获取电池的状态(充电/放电/当前充电/容量/等...)。 Linux操作系统。我正在做一个小程序供我自己使用,需要一些帮助。请在我的博客上查看该程序的描述:
此外,有没有办法真正查看计算机当前是否已连接到互联网。我目前正在通过请求www.google.com并查看我是否收到“503错误”作为回报。有没有更好的方法呢?我正在使用libCurl作为我程序的webinterface部分,但是想知道是否有更好的替代方案......
答案 0 :(得分:5)
没有可移植的方法来获取Windows和Linux之间的电池状态。您必须查询完全不同的API。你必须看看是否有人为此编写了一个包装器,但你可能需要自己动手。 (也许你在问是否有任何包装或库?)
有很多方法可以查看计算机是否已连接到互联网,但它们基本上都可以归结为ping可能正在运行的主机(如谷歌)。我使用ping而不是http connect。有各种C库可用于执行您自己的ping(无需调用程序。)
答案 1 :(得分:4)
关于您以编程方式确定自己是否已连接到互联网的第二个问题。在google.com请求中寻找503并非万无一失。许多wifi网络将重定向流量或以其他方式提供不正确的DNS名称,以防止您未经他们的授权连接到互联网。
例如,如果您不支付康卡斯特账单,则comcast会重写所有DNS响应,以指向您的IP地址,告知您支付康卡特账单。从http层的角度来看,没有发生任何错误,您已成功完成针对google.com的http请求。遗憾的是,页面内容不同。
答案 2 :(得分:2)
正如您可能从各种答案中推断出的那样,“连接到互联网”的问题是错误的。您无法对计算机执行任何操作 internal ,以确定它所连接的网络类型。您可以拥有有效的IP,但必须位于专用网络上。 ICMP ping可以通过防火墙过滤,但HTTP不会。可以将HTTP到任意主机动态路由到本地“立即付款”帐户管理应用程序。故障模式列表一直在继续。如果您确实需要知道是否可以通过互联网访问特定服务,则需要尝试连接该服务。
我无法在Windows中谈论电源管理问题,但在linux中读取电池状态就像打开/ proc / acpi / battery下的文件一样简单(可能有几个电池目录,每个都包含“状态” “和”info“文件带有明文,人类可读的字段。
答案 3 :(得分:-3)
测试互联网连接,检查你的IP地址。如果你在linux中有0.0.0.0,或者在windows中有169.254.x.y,那么没有
ifconfig (linux)
ipconfig (windows)