首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取DNS(mDNS)响应

读取DNS(mDNS)响应
EN

Stack Overflow用户
提问于 2013-02-19 18:20:04
回答 1查看 948关注 0票数 0

对于一个项目,我必须阅读mDNS响应。

我经常尝试读取我的流,但是对于我试图读取的数据来说,流太短了。

我有几个案子,我想我漏掉了什么。

一个具体的例子:我收到了这个(我做了一个小的“响应解析器”来看看我收到了什么并“解码”它:

代码语言:javascript
复制
0000000000000000  0              ID
1                 True           IsResponse
0000              0              Opcode
1                 True           Authoritative
0                 False          Truncation
0                 False          Recursion desired
0                 False          Recursion available
000               000            Zero
0000              0              RCode
0000000000000000  0              Question count
0000000000000100  4              Answers count
0000000000000000  0              Authority count
0000000000000000  0              Additional count
Answers:
00001001          9              Size
01011111          _
01110011          s
01100101          e
01110010          r
01110110          v
01101001          i
01100011          c
01100101          e
01110011          s
00000111          7              Size
01011111          _
01100100          d
01101110          n
01110011          s
00101101          -
01110011          s
01100100          d
00000100          4              Size
01011111          _
01110101          u
01100100          d
01110000          p
00000101          5              Size
01101100          l
01101111          o
01100011          c
01100001          a
01101100          l
00000000          0              Size
00000000          0              Size
00001100          12             Size
00000000
00000001          ?
00000000
00000000
00011100          ?
00100000
00000000
00010111          ?
00001111          ¤
01011111          _
01110000          p
01100100          d
01101100          108            Size
00101101          -
01100100          d
01100001          a
01110100          t
01100001          a
01110011          s
01110100          t
01110010          r
01100101          e
01100001          a
01101101          m
00000100          ?
01011111          _
01110100          t
01100011          c
01110000          p
11000000          ?
00100011          #
11000000          ?
00001100          ?
00000000
00001100          ?
00000000
00000001          ?
00000000
00000000
00011100          ?
00100000
00000000
00001011          ?
00001000
01011111          _
01110000          p
01110010          r
01101001          i
01101110          n
01110100          t
01100101          e
01110010          r
11000000          ?
01000100          D
11000000          ?
00001100          ?
00000000
00001100          ?
00000000
00000001          ?
00000000
00000000
00011100          ?
00100000
00000000
00000111
00000100          ?
01011111          _
01101001          i
01110000          p
01110000          p
11000000          ?
01000100          D
11000000          ?
00001100          ?
00000000
00001100          ?
00000000
00000001          ?
00000000
00000000
00011100          ?
00100000
00000000
00001000
00000101          ?
01011111          _
01101000          h
01110100          t
01110100          t
01110000          p
11000000          ?
01000100          D
out of range      out of range
out of range      out of range
[...]

我不明白为什么我这里没有足够的数据。截断位被设置为false,所以我应该拥有这个包中的所有数据,01101100实际上意味着108的大小,而我这里只有大约75个字节。那么我到底做错了什么呢?这个问题似乎主要发生在包含答案的数据包中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-22 15:15:16

事实上,问题在于该协议定义了压缩。如果下一个链的大小以11xx xxxx开始,这意味着它是指向前一个字符串的指针,xx xxxx是流的字节索引。

我没有读到这篇文章,这意味着我读到的11xx xxxx有一个长度,这给了我一个经常超出范围的巨大长度。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14955042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档