Home‎ > ‎

ネットワーク状態(on/off)の検出方法

netstat -r
lookup the routine table

ネットワーク接続しにいかずに、ネットワーク接続状態の取得について

現時点の調べによって
使うFramework: System Configuration Framewok
使うAPI: The Dynamic Store API 
http://developer.apple.com/documentation/Networking/Conceptual/SystemConfigFrameworks/SC_Components/chapter_3_section_3.html#//apple_ref/doc/uid/TP40001065-CH207-CHDDDCHG

The Dynamic Store はネットワーク接続状態を保存しています。ネットワーク接続状態を変わるとその対応のdynamic store keyの値を更新されます。Dynamic Store APIで System Configuration schemaを通じて、そのキーの値を監視して、接続状態の変化を取得できます。

ターミナールの中にシステム設定を管理するコマンド「scutil」を使ってみたら、dynamic store keyを見れます。
例えば:
-------------------------------------------------------------------------------------
$ scutil
> list
  subKey [0] = DirectoryService:PID
  subKey [1] = Plugin:IPConfiguration
  subKey [2] = Setup:
  subKey [3] = Setup:/
  subKey [4] = Setup:/Network/Global/IPv4
  subKey [5] = Setup:/Network/HostNames
 ......
 subKey [37] = State:/Network/Interface/en0/IPv4
  subKey [38] = State:/Network/Interface/en0/IPv6
  subKey [39] = State:/Network/Interface/en0/Link
  subKey [40] = State:/Network/Interface/en1/AirPort
......
さらに、「show」を使って、キーの値がわかります。下の例はランケーブルを接続している状態(TRUE)を示しています。
> show  State:/Network/Interface/en0/Link
<dictionary> {
  Active : TRUE
}
------------------------------------------------------------
今まで、試してみたのはランケーブルを接続しないの検出とシステム環境設定->ネットワーク->IPv4に「切」を設定する場合の検出です。