gpt4 book ai didi

erlang - 如何在 Erlang 中构建 DNS 查询记录?

转载 作者:行者123 更新时间:2023-12-04 15:05:16 24 4
gpt4 key购买 nike

我正在构建一个本地 Bonjour/Zeroconf 库,需要构建 DNS 查询记录以广播到其他机器。我试过查看 Erlang 源代码,但由于我对 Erlang 比较陌生,所以它在所有 inet_XXX.erl 和 .hrl 文件的内部都变得有点密集。我有一个用于接收和解析 DNS 记录有效负载的监听器,但我不知道如何创建查询记录。我真正需要知道的是我需要传递给 inet_dns:encode() 以获得我可以发送的二进制文件。这就是我想要做的。

{ok,P} = inet_dns:encode(#dns_query{domain="_daap._tcp.local",type=ptr,class=in})

这是我得到的错误
10> test:send().
** exception error: {badrecord,dns_rec}
in function inet_dns:encode/1
in call from test:send/0
11>

最佳答案

我终于弄明白了。

send(Domain) ->
{ok,S} = gen_udp:open(5555,[{reuseaddr,true}, {ip,{224,0,0,251}}, {multicast_ttl,4}, {multicast_loop,false}, {broadcast,true}, binary]),
P = #dns_rec{header=#dns_header{},qdlist=[#dns_query{domain=Domain,type=ptr,class=in}]},
gen_udp:send(S,{224,0,0,251},5353,inet_dns:encode(P)),
gen_udp:close(S).

关于erlang - 如何在 Erlang 中构建 DNS 查询记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1740297/

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