- 題名: NTPサーバの取得
- 日時: 2012/03/15 11:10:30
- ID: 30090
- この記事の返信元:
- (なし)
- この記事への返信:
- [30092] Re[1]: NTPサーバの取得2012/03/15 11:36:59
- ツリーを表示
2012/03/15(Thu) 13:37:53 編集(投稿者) 2012/03/15(Thu) 12:57:55 編集(投稿者) ■No30093に返信(yosiさんの記事) > NtpServerには「time.windows.com,0x1」と入っているのですが、 「ntp1.example.com,0x1 ntp2.example.com,0x1」のように複数指定されたり、 「time.example.com,0x2」や「time.example.com,0x9」などとなることも。 なお、OS がこの設定を使うかどうかは "Type" の値によります。 http://www.atmarkit.co.jp/fwin2k/operation/winntp02/winntp02_03.html > 「time.windows.com」までを取得したいのですが、 > ntpServer.Substring(0, ntpServer.IndexOf(',')); > 以外になにか簡単に出来る方法はありますか? IndexOf & Substring でも十分に簡単な気がしますが、 それだと何か都合が悪かったのでしょうか? もちろん、未設定時の対応などは必要ですし、複数の外部NTPサーバーが 指定された場合に対応する必要もあるでしょうけれども。 とりあえず、別の方法という事で: (案1) Split で空白で分割した後、それぞれを "," でさらに Splitする。 string ntpServer = "ntp1.example.com,0x1 ntp2.example.com,0x1"; string[] ntp = ntpServer.Split(' ').Select(s => s.Split(',').First()).ToArray(); (案2) 正規表現で切り出す。 string ntpServer = "ntp1.example.com,0x1 ntp2.example.com,0x1"; string[] ntp = Regex.Matches(ntpServer, "[^, ]+(?=,)").OfType<Match>().Select(x => x.Value).ToArray(); # 案1 と案2 では、ntpServer == "" だった場合の動作が異なります。
分類:[.NET]
ネットワーク設定の取得をしています。
IPアドレスやサブネットマスクなどは、
WMIで下記のように取得しました。
string query = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=TRUE";
ManagementObjectSearcher mos = new ManagementObjectSearcher(query);
ManagementObjectCollection moc = mos.Get();
foreach (ManagementObject mo in moc)
{
// IPアドレス取得
string ipAddress = ((string[])mo.Properties["IPAddress"].Value)[0];
// サブネットマスク取得
string ipSubnet = ((string[])mo.Properties["IPSubnet"].Value)[0];
}
そこで質問ですが、
NTPサーバ(URL)を取得することはできるのでしょうか?
WMI以外でも構いません。
NTPサーバの取得方法を教えていただきたいです。
よろしくお願いします。