gpt4 book ai didi

java-通过网络发送 ISO8583 数据

转载 作者:行者123 更新时间:2023-12-01 14:12:02 25 4
gpt4 key购买 nike

我正在尝试通过网络连接发送 iso8583 数据,目前当我发送数据时,它在 TCP 查看器中显示为一个长字符串

但它应该看起来像这样

0000(0000)  30 38 30 30 82 38 00 00  00 00 00 00 04 00 00 00   0800.8..........
0016(0010) 00 00 00 00 30 38 32 34 31 30 35 31 30 30 31 33 ....082410510013
0032(0020) 35 31 30 30 31 33 35 31 30 30 30 38 32 34 33 30 5100135100082430
0048(0030) 31 1

我的发送数据的代码

Socket plug = new Socket(Config.getServerIP(), Config.getServerPort());
DataInputStream In= new DataInputStream(plug.getInputStream());
PrintWriter Out = new PrintWriter(plug.getOutputStream());

String Indata, Outdata;
Outdata =" ";
Indata = "NOTHING";

while (!Outdata.equals("Bye"))
{
Outdata=message;
Out.write(Outdata);
Out.flush();

if (!Outdata.equals("Bye"))
{
Indata=In.readLine();
System.out.println(Indata);
}
}
In.close();
Out.close();

数据是否必须以特定方式发送?非常感谢任何帮助。

最佳答案

事实证明,问题是我必须使用整数字节数组编写输出,这又在 TCP 查看器中显示为十六进制数据,我面临的下一个问题是字节数​​组中超过 128 的任何整数导致溢出绕过,我必须使用以下方法

Socket server = new Socket(Config.getServerIP(), Config.getServerPort());
bytes = packData(bytes);
server.getOutputStream().write(bytes, 0, bytes.length);

然后是 packData 方法

static byte[] packData(byte[] data) {
int len = data.length;
byte buf[] = new byte[len + 2];
buf[0] = (byte) (len >> 8 & 255);
buf[1] = (byte) (len & 255);
System.arraycopy(data, 0, buf, 2, len);
return buf;
}

希望这对某人有帮助

关于java-通过网络发送 ISO8583 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18443039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com