在 mDNS 中,将 TXT 记录放入 Answers
部分以回应查询相对简单。下面是如何实现这一点的步骤和示例:
步骤
构建 TXT 记录:首先,您需要构建一个 TXT 记录,包含您想要返回的文本数据。这通常是一个字符串或多个字符串值的集合。
创建 mDNS 响应:当接收到针对某个服务或主机名的查询时,您将创建一个 mDNS 响应消息,并将 TXT 记录添加到
Answers
部分。发送响应:最后,将构造好的 mDNS 响应通过 UDP(端口 5353)发送给请求者。
示例
假设我们有以下信息:
- 查询的服务名称为
_example._tcp.local
- 我们希望回复一条 TXT 记录,其中包含一些键值对,如
key1=value1
和key2=value2
。
构造 TXT 记录
TXT Record:
- key1=value1
- key2=value2
添加到 mDNS Response 的 Answers 中
# 假设使用 Python 的 dnslib 库进行处理(只是示例)
from dnslib import DNSRecord, DNSHeader, RR, QTYPE, A, TXT
def create_mdns_response(query):
# 创建响应头部
header = DNSHeader(id=query.header.id, qr=1, aa=1)
# 创建 TXT 记录
txt_record = RR(
rname="example.local.", # 服务名
rtype=QTYPE.TXT,
rclass=1, # IN (Internet)
ttl=300, # 生存时间,单位秒
rdata=TXT("key1=value1", "key2=value2") # 将文本数据作为数据部分
)
# 创建完整响应包,包括 TXT 记录
response = DNSRecord(header=header)
response.add_answer(txt_record) # 将 TXT 放入 Answers 中
return response
# 假设 query 是接收到的请求,可以使用该函数生成响应。
response_packet = create_mdns_response(query)
注意事项
TTL(生存时间):根据需要设置 TTL,以指示客户端应该缓存此信息多长时间。
服务命名:确保在构建 TXT 记录时正确引用您的服务名称或设备名称,这样客户端才能匹配和解析正确的信息。
总结
在 mDNS 中,要将 TXT 回复放入 Answers
中,只需在接收到相关查询时创建并添加适当的资源记录,然后将其打包成响应消息发送回去。这样客户端就能收到它所请求的信息了。
内容由零声教学AI助手提供,问题来源于学员提问