2

WindowsとLinuxの間でポータブルな方法でC++プログラムからバッテリーのステータス(充電/放電/現在の充電/容量など)を取得する方法はありますか?私は自分で使用するための小さなプログラムを実行していて、それについていくらかの助けが必要です。私のブログでプログラムの説明をご覧ください。


JBジャーナル

また、コンピュータが現在インターネットに接続されているかどうかを実際に確認する方法はありますか。私は現在、www.google.comをリクエストして、「503エラー」が返されるかどうかを確認することでこれを行っています。これを行うためのより良い方法はありますか?プログラムのWebインターフェイス部分にlibCurlを使用していますが、より良い代替手段があるかどうかを知りたいです...

4

4 に答える 4

4

インターネットに接続しているかどうかをプログラムで判断することに関する2番目の質問に関して。google.com リクエストで 503 を探すのは簡単ではありません。多くの Wi-Fi ネットワークは、トラフィックをリダイレクトするか、間違った dns 名を提供して、承​​認なしにインターネットに接続できないようにします。

たとえば、comcast の請求書を支払わない場合、comcast はすべての dns 応答を書き換えて、comcast の請求書を支払うように指示する IP アドレスを指定します。http レイヤの観点からは、エラーは発生していません。google.com に対する http リクエストは正常に完了しています。残念ながら、ページの内容は異なります。

于 2009-07-23T20:08:53.333 に答える
2

さまざまな回答から推測できるように、「インターネットに接続されている」という質問は形式が正しくありません。どのような種類のネットワークに接続されているかを確実に知るために、コンピューターの内部でできることは何もありません。有効な IP を持つことができますが、プライベート ネットワーク上にいることができます。ICMP ping はファイアウォールによってフィルタリングされる場合がありますが、HTTP はフィルタリングされません。任意のホストへの HTTP は、ローカルの「今すぐ支払う」アカウント管理アプリケーションに動的にルーティングされる場合があります。故障モードのリストは延々と続きます。インターネット上の特定のサービスにアクセスできるかどうかを本当に知りたい場合は、そのサービスに接続してみる必要があります。

Windows での電源管理の問題について話すことはできませんが、Linux でバッテリーの状態を読み取るのは、/proc/acpi/battery の下のファイルを開くのと同じくらい簡単です (複数のバッテリー ディレクトリがあり、それぞれに「状態」と「 info" ファイルには、人間が判読できるプレーンテキストのフィールドが含まれています。

于 2009-07-23T20:23:28.797 に答える