プロジェクトでは、mDNS 応答を読み取る必要があります。
IETF doc (および多くのスキーマを含む tcpguide ) を読みましたが、それらを尊重していると思いますが、問題があります。
多くの場合、ストリームを読み込もうとしていますが、読み込もうとしているデータに対してストリームが短すぎます。
いくつかのケースがありましたが、何かが足りないと思います。
具体的な例: 私はこれを受け取ります (受け取ったものを確認し、それを「デコード」するために小さな「応答パーサー」を作成しました:
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 バイトしかありません。それで、私は何を間違っていますか?この問題は、主に回答を含むパケットで発生するようです。