【发布时间】:2021-12-30 18:43:13
【问题描述】:
我正在使用 JPOS 发送 0800 网络请求。但问题是 2 个字节的标头长度没有附加到我的消息中。 消息的长度如果为 42,但添加 2 个字节的标头应使其为 44。 TCP 转储:
length 42
0x0000: 4500 005e 4448 4000 4006 8842 0a14 5140 E..^DH@.@..B..Q@
0x0010: 0a5f 085d 952e 30c8 5cdb c683 49e6 692d ._.]..0.\...I.i-
0x0020: 8018 01f6 6e60 0000 0101 080a 0775 0600 ....n`.......u..
0x0030: 889f a492 3038 3030 8220 0100 0000 0000 ....0800........
0x0040: 0400 0000 0000 0000 3132 3234 3139 3035 ........12241905
0x0050: 3136 3132 3033 3437 3030 3130 3033 16120347001003
由于我的消息长度为 42,因此 002A 应附加在十六进制转储中。
消息应该是:
My Code:
BaseChannel channel = new NACChannel(packager, null);
channel.setHost("xx.xx.xx.xx", xxxxx);
channel.connect();
ISOMsg isoMsg = new ISOMsg();
isoMsg.setPackager(packager);
isoMsg.setMTI("0800");
isoMsg.set(7, "1224190516");
isoMsg.set(11, "120347");
isoMsg.set(24, "001");
isoMsg.set(70, "003");
byte[] send_PackedRequestData = isoMsg.pack();
channel.send(send_PackedRequestData);
如何将消息的长度附加到开头,使其变为
002A0800................1224190516120347001003
【问题讨论】:
-
这似乎和stackoverflow.com/q/70535539/3444205的问题一模一样,这是stackoverflow.com/a/70535774/3444205的可能答案
-
@AndrésAlcarraz 你能说出 channel.setPackager(packager) 是做什么的吗?我已经这样做了,isoMsg.setPackager(packager);
-
它将打包程序应用于通过它发送的所有消息,使用它来获取要发送的字节