3

システムネットワーク設定には、いくつかのロケーション名があります。現在またはアクティブなネットワークロケーション名とすべてのネットワークロケーションのリストを取得するにはどうすればよいですか?
SystemConfiguration.frameworkはこれをサポートしていると思いますが、使用するAPIを正確に取得できませんでした。

よろしくお願いします。

よろしく
デバラガダ

4

2 に答える 2

7

を使用SCPreferencesCreateして設定をSCNetworkSetCopyAll取得してから、ネットワークの場所だけを取得できます。SCNetworkSetGetName場所の名前を取得します。

SCPreferencesRef prefs = SCPreferencesCreate(NULL, @"SystemConfiguration", NULL);
NSArray *locations = (NSArray *)SCNetworkSetCopyAll(prefs);
for (id item in locations) {
    NSString *name = (NSString *)SCNetworkSetGetName((SCNetworkSetRef)item);
    ...
}
CFRelease(locations);
CFRelease(prefs);

詳細については、「システム構成プログラミングガイドライン」をお読みください。

于 2010-04-03T13:03:16.877 に答える
1

これは、利用可能なすべてのネットワークロケーションのリストを取得するための迅速な5.1実装です。

    func getAvailabeNetworkLocation() -> [String]
{
    var results = [String]()

    
    var prefs : SCPreferences
    prefs = SCPreferencesCreate (nil, "Softech" as CFString, nil)!
    var sets : CFArray
    sets = SCNetworkSetCopyAll (prefs)!
    
    let count = CFArrayGetCount(sets) as Int
    var newSet : SCNetworkSet? = nil
    var bFound : Bool = false
    
   

    
    for nIndex  in 0..<count {
     let mySet = CFArrayGetValueAtIndex (sets, nIndex)
     let key = Unmanaged<SCNetworkSet>.fromOpaque(mySet!)
        newSet = key.takeUnretainedValue()
        let name : String = SCNetworkSetGetName(newSet!)! as String
        print("Network location name: \(name)")
     results.append(name)
    }
    return results
}
于 2021-03-23T14:03:11.983 に答える