我有一个通过 TCP 与应用程序(android)通信的硬件。使用智能手机上的 pcapdroid 捕获通信。
现在我尝试构建一个应该与硬件(而不是android)通信的节点应用程序。
现在的问题是向硬件(kemper 放大器)发送数据。
const hexToString = (hex) => {
let str = '';
for (let i = 0; i < hex.length; i += 2) {
const hexValue = hex.substr(i, 2);
const decimalValue = parseInt(hexValue, 16);
str += String.fromCharCode(decimalValue);
}
return str;
};
const startHex = ["7b37374442364232" +
"382d373835452d343634312d42383430" +
"2d3432463046303641313146437d0d0a" +
"7b33363946353045372d373530422d34" +
"3539412d424145452d38354144443346" +
"33373938447d0d0a7b32343930323732" +
"452d434439322d344442412d41453332" +
"2d4538414633374544334230417d0d0a" +
"7b37373443444239452d373445442d34" +
"3734302d414630392d41433936423341" +
"36394131317d0d0a2e0d0a", "7b373734" +
"43444239452d373445442d343734392d41" +
"4630392d4143393642334136394131317d",
"0d0a","0000000000000000"]
const socket = net.createConnection({port: 5727,host: "192.168.0.13"});
socket.on('data', data => {
console.log("tcpserver client on data " + data);
if (Buffer.from(data).toString('hex') === startHex[0]) {
socket.write(Buffer.from(hexToString(startHex[1]),'utf-8'), (data) => {
console.log("firstsend " + data);
})
}
})
socket.on('ready', () => {
console.log("tcpserver client on ready " );
})
socket.on('error', (err) => {
console.log("tcpserver client on error " + err );
})
硬件似乎不接受数据...(参见附件node_capture)
注意到了
node_capture:硬件发送数据(最后是网卡头和尾部 -> 请参阅此处的最小 pcap:https://github.com/schoko11/wireshark/blob/main/node_capture.pcapng)
0000 **68 54 5a d0 d2 25 02 0c 43 01 08 72 08 00** 45 00 hTZ..%..C..r..E.
0010 00 cb 03 d8 00 00 ff 06 35 a5 c0 a8 00 0d c0 a8 ........5.......
0020 00 52 16 5f b3 cc 00 00 f4 53 ce 23 ad 82 50 18 .R._.....S.#..P.
0030 3e 4e 42 c2 00 00 7b 37 37 44 42 36 42 32 38 2d >NB...{77DB6B28-
0040 37 38 35 45 2d 34 36 34 31 2d 42 38 34 30 2d 34 785E-4641-B840-4
0050 32 46 30 46 30 36 41 31 31 46 43 7d 0d 0a 7b 33 2F0F06A11FC}..{3
0060 36 39 46 35 30 45 37 2d 37 35 30 42 2d 34 35 39 69F50E7-750B-459
0070 41 2d 42 41 45 45 2d 38 35 41 44 44 33 46 33 37 A-BAEE-85ADD3F37
0080 39 38 44 7d 0d 0a 7b 32 34 39 30 32 37 32 45 2d 98D}..{2490272E-
0090 43 44 39 32 2d 34 44 42 41 2d 41 45 33 32 2d 45 CD92-4DBA-AE32-E
00a0 38 41 46 33 37 45 44 33 42 30 41 7d 0d 0a 7b 37 8AF37ED3B0A}..{7
00b0 37 34 43 44 42 39 45 2d 37 34 45 44 2d 34 37 34 74CDB9E-74ED-474
00c0 30 2d 41 46 30 39 2d 41 43 39 36 42 33 41 36 39 0-AF09-AC96B3A69
00d0 41 31 31 7d 0d 0a 2e 0d 0a **00** A11}......
node_capture:节点正在发送数据:(导致之后tcp重传)
0000 **02 0c 43 01 08 72 68 54 5a d0 d2 25 08 00** 45 00 ..C..rhTZ..%..E.
0010 00 4e 25 ef 40 00 40 06 93 0b c0 a8 00 52 c0 a8 .N%.@[email protected]..
0020 00 0d b3 cc 16 5f ce 23 ad 82 00 00 f4 f6 50 18 ....._.#......P.
0030 fa 4d 81 f0 00 00 7b 37 37 34 43 44 42 39 45 2d .M....{774CDB9E-
0040 37 34 45 44 2d 34 37 34 39 2d 41 46 30 39 2d 41 74ED-4749-AF09-A
0050 43 39 36 42 33 41 36 39 41 31 31 7d C96B3A69A11}
hardware_capture:硬件发送数据(请参阅此处的最小捕获:https://github.com/schoko11/wireshark/blob/main/wireshark_sample1.pcap):
0000 45 00 00 cb 00 00 40 00 40 06 c1 9f c0 a8 00 0d E.....@.@.......
0010 0a d7 ad 01 16 5f b0 ce 77 eb 77 ec cc 3f 18 d2 ....._..w.w..?..
0020 50 18 04 00 24 41 00 00 7b 37 37 44 42 36 42 32 P...$A..{77DB6B2
0030 38 2d 37 38 35 45 2d 34 36 34 31 2d 42 38 34 30 8-785E-4641-B840
0040 2d 34 32 46 30 46 30 36 41 31 31 46 43 7d 0d 0a -42F0F06A11FC}..
0050 7b 33 36 39 46 35 30 45 37 2d 37 35 30 42 2d 34 {369F50E7-750B-4
0060 35 39 41 2d 42 41 45 45 2d 38 35 41 44 44 33 46 59A-BAEE-85ADD3F
0070 33 37 39 38 44 7d 0d 0a 7b 32 34 39 30 32 37 32 3798D}..{2490272
0080 45 2d 43 44 39 32 2d 34 44 42 41 2d 41 45 33 32 E-CD92-4DBA-AE32
0090 2d 45 38 41 46 33 37 45 44 33 42 30 41 7d 0d 0a -E8AF37ED3B0A}..
00a0 7b 37 37 34 43 44 42 39 45 2d 37 34 45 44 2d 34 {774CDB9E-74ED-4
00b0 37 34 30 2d 41 46 30 39 2d 41 43 39 36 42 33 41 740-AF09-AC96B3A
00c0 36 39 41 31 31 7d 0d 0a 2e 0d 0a 69A11}.....
hardware_capture:android发送数据:
0000 45 00 00 4e 6a c6 40 00 40 06 57 56 0a d7 ad 01 E..Nj.@[email protected]....
0010 c0 a8 00 0d b0 ce 16 5f cc 3f 18 d2 77 eb 78 8f ......._.?..w.x.
0020 50 18 00 41 17 94 00 00 7b 37 37 34 43 44 42 39 P..A....{774CDB9
0030 45 2d 37 34 45 44 2d 34 37 34 30 2d 41 46 30 39 E-74ED-4740-AF09
0040 2d 41 43 39 36 42 33 41 36 39 41 31 31 7d -AC96B3A69A11}
为什么我会收到 tcp 重传错误,
任何解决问题的建议
在wireshark中跟随tcp流给我这个:
谢谢!
starthex[1] 中的十六进制错误,我傻了...否则现在一切都很好:-(