当前位置:  开发笔记 > 运维 > 正文

在Mac OS X上以编程方式查找DNS服务器设置

如何解决《在MacOSX上以编程方式查找DNS服务器设置》经验,为你挑选了2个好方法。

我有一些跨平台的DNS客户端代码,我用它来做端到端SMTP和在Windows上我可以通过查看注册表找到当前的DNS服务器IP地址.在Mac上我可以使用第一个答案中提到的SystemConfiguration框架,但是这样做的确切方法并不是很明显.

例如,SCDynamicStoreCopyDHCPInfo返回一些动态DHCP相关数据,但不返回DNS服务器地址.



1> 小智..:

您可以使用SystemConfiguration框架.它在C.

更新:显然网络的其余部分比我想象的更难使用.搜索密钥"State:/ Network/Service/ServiceID/DNS",其中ServiceID是服务的ID.



2> 小智..:

我知道回答这个问题很晚,但可能会对其他人有所帮助。

该代码将有助于完成此任务..

SCPreferencesRef _prefsDNS = SCPreferencesCreate(NULL, CFSTR("DNSSETTING"), NULL);

CFArrayRef services = SCNetworkServiceCopyAll(_prefsDNS);

if (services) {
long count = CFArrayGetCount(services);
for (int i = 0; i < count; i++) {
service = CFArrayGetValueAtIndex(services, i);
interface = SCNetworkServiceGetInterface(service);
NSString *interfaceServiceID = (__bridge NSString*)SCNetworkServiceGetServiceID(service);
CFStringRef primaryservicepath = CFStringCreateWithFormat(NULL,NULL,CFSTR("State:/Network/Service/%@/DNS"),interfaceServiceID);
        //    NSLog(@"%@",primaryservicepath);


SCDynamicStoreRef dynRef=SCDynamicStoreCreate(kCFAllocatorSystemDefault, CFSTR("DNSSETTING"), NULL, NULL);
                // NSLog(@"%@",dynRef);
CFDictionaryRef dnskey = SCDynamicStoreCopyValue(dynRef,primaryservicepath);

           //     NSLog(@"%@",dnskey);
//dnskey will give you the DNS server address.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有