zoukankan      html  css  js  c++  java
  • Macosx Setdns

    通过C语言接口在Mac App内部对系统的DNS配置进行改动。

    Mac OS X设置DNS代码

    演示样例代码setDNS.c内容例如以下:

    #include <SystemConfiguration/SystemConfiguration.h>
    
    static bool setDNS(CFStringRef *resolvers, CFIndex resolvers_count)
    {
        SCDynamicStoreRef ds = SCDynamicStoreCreate(NULL, CFSTR("setDNS"), NULL, NULL);
    
        CFArrayRef array = CFArrayCreate(NULL, (const void **) resolvers,
                resolvers_count, &kCFTypeArrayCallBacks);
    
        CFDictionaryRef dict = CFDictionaryCreate(NULL,
                (const void **) (CFStringRef []) { CFSTR("ServerAddresses") },
                (const void **) &array, 1, &kCFTypeDictionaryKeyCallBacks,
                &kCFTypeDictionaryValueCallBacks);    
    
        CFArrayRef list = SCDynamicStoreCopyKeyList(ds,
                CFSTR("State:/Network/(Service/.+|Global)/DNS"));
    
        CFIndex i = 0, j = CFArrayGetCount(list);
        if (j <= 0) {
            return FALSE;
        }
        bool ret = TRUE;
        while (i < j) {
            ret &= SCDynamicStoreSetValue(ds, CFArrayGetValueAtIndex(list, i), dict);
            i++;
        }
        return ret;
    }
    
    int main(int argc, const char * argv[])
    {
        CFStringRef resolvers[] = {
            CFSTR("8.8.8.8"),
            CFSTR("114.114.114.114")
        };
        setDNS(resolvers, (CFIndex) (sizeof resolvers / sizeof resolvers[0]));
    
        return 0;
    }
    

    相应的Makefile文件内容:

    #!/usr/bin/make -f
    default: setDNS.c
            cc -o setDNS setDNS.c -framework Foundation -framework SystemConfiguration
    clean:
            rm setDNS
    

    谢谢各位。欢迎交流并指正。

    ---- 大茶园丁@戴维营教育

    http://io.diveinedu.com

    http://www.diveinedu.com

    https://github.com/DiveinEdu-CN

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    better-scroll 介绍
    promise 异步编程
    vue网址路由的实时检测
    浏览器本地存储的使用
    获取元素的位置
    如何设置动画的运动效果
    实现对称加密及非对称公钥加密
    Centos 7系统启动修复
    Centos 7服务启动文件
    内核编译-4.12
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4890929.html
Copyright © 2011-2022 走看看