我正在构建一个本地 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>