我有一些跨平台的DNS客户端代码,我用它来做端到端SMTP和在Windows上我可以通过查看注册表找到当前的DNS服务器IP地址.在Mac上我可以使用第一个答案中提到的SystemConfiguration框架,但是这样做的确切方法并不是很明显.
例如,SCDynamicStoreCopyDHCPInfo返回一些动态DHCP相关数据,但不返回DNS服务器地址.
您可以使用SystemConfiguration框架.它在C.
更新:显然网络的其余部分比我想象的更难使用.搜索密钥"State:/ Network/Service/ServiceID/DNS",其中ServiceID是服务的ID.
我知道回答这个问题很晚,但可能会对其他人有所帮助。
该代码将有助于完成此任务..
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.