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
谢谢各位。欢迎交流并指正。
---- 大茶园丁@戴维营教育
https://github.com/DiveinEdu-CN
版权声明:本文博主原创文章,博客,未经同意不得转载。
Macosx Setdns的更多相关文章
- Mac-OSX的Python3.5虚拟环境下安装Opencv
Mac-OSX的Python3.5虚拟环境下安装Opencv 1 关键词 关键词:Mac,OSX,Python3.5,Virtualenv,Opencv 2 概述 本文是一篇 环境搭建 的基础 ...
- macosx 10.11 python pip install 出现错误OSError: [Errno 1] Operation not permitted:
Exception: Traceback (most recent call last): File , in main status = self.run(options, args) File , ...
- XCode6.3上使用opencv教程(MacOSX 10.10)
OpenCV 是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows和Mac OS操作系统上.它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Pyth ...
- macOSX 访问 win7共享文件
macOSX 访问 win7共享文件 macOSX 访问 win7共享文件 2014年1月8日星期三 开年的第一篇写下自己使用macos中遇到的问题.为后来初学者提供一些浅薄经验. 第一步:WINDO ...
- [MAC ] Mac-OSX下安装Git
转载自 : http://www.cnblogs.com/shanyou/archive/2011/01/30/1948088.html Mac-OSX下安装Git是一件很简单的事,我们可以下载一个安 ...
- [MacOSX]
When i run svn up in the folder, i got these error: svn: Error converting entry in directory 'XXXXX' ...
- MacOSX和Windows 8的完美融合
MacOSX和Windows8的完美融合 一般情况下我们要在MACOS系统下运行Windows软件怎么办呢?一种方法我们可以装CrossOver这款软件,然后在configuration->in ...
- MacOSX快捷键
[MacOSX快捷键] 关闭显示器:Shift + Ctrl + 退出键 休眠:Command + Option + 退出键 关机:Ctrl + Option + Command + 退出键 打开文件 ...
- 在MacOSX下使用Github管理Xcode代码
版本控制应该算是每个程序员所必备的技能,这个重要性,我就不多说了哈.现在版本控制基本上就是两种途径:SVN和Git.对于SVN我并不是非常了解,只知道在Windows下非常实用,但是在MacOSX下, ...
随机推荐
- Swift - 给项目导入资源
如果想添加资源到项目中去,只要通过鼠标左键将文件或者存有文件的文件夹直接拖到Xcode中. 当松开鼠标后会弹出如下面板: (1)勾上“Copy items if needed”就会拷贝文件进项目, ...
- Visual Studio的SDK配置
Visual Studio的SDK Visual Studio 6.0自带的SDK是1998年的,目录为C:\Program Files\Microsoft Visual Studio\VC98\,这 ...
- Android Studio中如何打JAR包
Android Studio中对于library类型的Moudle,默认打出来的是AAR包, 但有时候我们的SDK还需要共享给一些其他eclipse的项目使用,这样我们就需要输出JAR包, 可以通过在 ...
- Eclipse插件引入jar包的方法(转)
搞了两天,终于找到解决办法了.原来 Eclipse 插件项目引入外面的jar包不能用 build path---->add external jars的方法. 先说明两个概念:类加载器,O ...
- Java魔法堂:JVM的运行模式 (转)
一.前言 JVM有Client和Server两种运行模式.不同的模式对应不同的应用场景,而JVM也会有相应的优化.本文将记录JVM模式的信息,以便日后查阅. 二.介绍 在$JAVA_HOME/jre/ ...
- hprose rpc使用实例(同时有Java和Delphi客户端的例子)
php server <?php require_once('src/Hprose.php'); function hello($name) { echo "Hello $name!& ...
- VS2008 环境中完美搭建 Qt 4.7.4 静态编译的调试与发布(好像很不错,有六张插图说明)good
为什么要在VS2008中使用QT静态编译呢?很简单,因为VS2008编译器编译出来的文件比mingw编译的要几乎小一半. 好了现在我们来做些准备工作,VS2008自然要安装的,然后打上SP1的补丁.然 ...
- hdu 1217 利用flord算法求 有环图 2点之间最大值
Arbitrage T ime Limit: 2000/1000 MS (Java/Other ...
- HDU 2444 The Accomodation of Students(推断是否是二分图)
题目链接 题意:n个学生,m对关系,每一对互相认识的能住一个房间.问否把这些学生分成两组,要求每组的学生都互不认识.求最多须要多少个房间. 能否分成两组?也就是说推断是不是二分图,推断二分图的办法,用 ...
- Defender Game 游戏实践(1) 基本游戏场景实现
在网上看到 郑州|boy 这个博客,里面有几篇文章,记录了其用cocos2d-x这个游戏引擎编写的一个游戏,十分不错,所以这段时间,依样画葫芦,依次学习一下. 由于博主开发的平台是在win32,而且屏 ...