gpt4 book ai didi

ios - 如何在 iOS 应用程序中获取 DNS TXT 记录

转载 作者:太空狗 更新时间:2023-10-30 04:01:58 25 4
gpt4 key购买 nike

我想从我自己的应用程序检查我的服务器的 TXT 记录。

这可能吗?如果是,如何做到这一点?

谢谢!

最佳答案

这是我很快拼凑起来的东西。我对 TXT 记录不是很熟悉,所以您可能想用几个不同的场景来测试它,但它演示了基本概念。如果需要,您也可以修改它以返回 TTL 值。您需要将 -lresolv 添加到链接器标志,并导入 resolv.h header 。

#include <resolv.h>

static NSArray *fetchTXTRecords(NSString *domain)
{
// declare buffers / return array
NSMutableArray *answers = [NSMutableArray new];
u_char answer[1024];
ns_msg msg;
ns_rr rr;

// initialize resolver
res_init();

// send query. res_query returns the length of the answer, or -1 if the query failed
int rlen = res_query([domain cStringUsingEncoding:NSUTF8StringEncoding], ns_c_in, ns_t_txt, answer, sizeof(answer));

if(rlen == -1)
{
return nil;
}

// parse the entire message
if(ns_initparse(answer, rlen, &msg) < 0)
{
return nil;
}

// get the number of messages returned
int rrmax = rrmax = ns_msg_count(msg, ns_s_an);

// iterate over each message
for(int i = 0; i < rrmax; i++)
{
// parse the answer section of the message
if(ns_parserr(&msg, ns_s_an, i, &rr))
{
return nil;
}

// obtain the record data
const u_char *rd = ns_rr_rdata(rr);

// the first byte is the length of the data
size_t length = rd[0];

// create and save a string from the C string
NSString *record = [[NSString alloc] initWithBytes:(rd + 1) length:length encoding:NSUTF8StringEncoding];
[answers addObject:record];
}

return answers;
}

用法非常简单:

NSArray *records = fetchTXTRecords(@"google.com");
NSLog(@"%@", records);

// outputs:
// (
// "v=spf1 include:_spf.google.com ip4:216.73.93.70/31 ip4:216.73.93.72/31 ~all"
// )

关于ios - 如何在 iOS 应用程序中获取 DNS TXT 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26478984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com