zoukankan      html  css  js  c++  java
  • OSX 监听系统网络设置

    由于日常开发的需求,我们需要监听OSX一些系统设置的变化,达到软件程序设置的同步,这时我们可以通过以下函数监听系统设置的改变:

    #include <SystemConfiguration/SystemConfiguration.h>
    
    SCDynamicStoreRef dynStore;
    SCDynamicStoreContext context = {0, this, NULL, NULL, NULL};
    dynStore = SCDynamicStoreCreate(kCFAllocatorDefault,
        CFBundleGetIdentifier(CFBundleGetMainBundle()),
        SystemProxyChangeCallBack,//自定义回调函数,备注【1】
        &context);
    const CFStringRef keys[3] = {CFSTR("State:/Network/Global/Proxies")};//获取系统代理设置,备注【2】
    CFArrayRef watchedKeys = CFArrayCreate(kCFAllocatorDefault,
        (const void **)keys,
    1,
        &kCFTypeArrayCallBacks);
    if (SCDynamicStoreSetNotificationKeys(dynStore, NULL, watchedKeys))
    {
        CFRelease(watchedKeys);
        CFRunLoopSourceRef rlSrc = SCDynamicStoreCreateRunLoopSource(kCFAllocatorDefault, dynStore, 0);
        CFRunLoopAddSource(CFRunLoopGetCurrent(), rlSrc, kCFRunLoopDefaultMode);
        CFRelease(rlSrc);
    }
    else
    {
        CFRelease(watchedKeys);
        CFRelease(dynStore);
        dynStore = NULL;
    }

    CFRunLoopRun(); //在程序中需要调用该函数监听效果

    备注【1】,当系统设置有所改变时,会触发该回调函数,可根据具体需要做相关的操作处理

    void SystemProxyChangeCallBack(SCDynamicStoreRef store, CFArrayRef changedKeys,void *info)
    {
    }

    备注【2】,这里demo程序为监听网络代理改变属性的设置,其他属性值可参考:

    https://developer.apple.com/library/mac/documentation/Networking/Conceptual/SystemConfigFrameworks/SC_UnderstandSchema/SC_UnderstandSchema.html

  • 相关阅读:
    R学习 第二篇:矩阵和数组
    R学习 第一篇:变量和向量
    PowerBI开发 第七篇:数据集和数据刷新
    PowerBI开发 第八篇:查询参数
    PowerBI开发 第六章:数据网管
    专用管理连接(DAC)和单用户模式
    PowerBI开发 第五篇:关系和交互
    PowerBI开发 第四篇:DAX 表达式基础
    PowerBI开发 第三篇:报表设计技巧
    分区表介绍
  • 原文地址:https://www.cnblogs.com/sz-leez/p/4490101.html
Copyright © 2011-2022 走看看