java-通过网络为iso8583发送数据
我正在尝试通过网络连接发送iso8583数据,当前,当我发送数据时,它在TCP查看器中显示为一个长字符串 但它应该是这样的java-通过网络为iso8583发送数据,java,Java,我正在尝试通过网络连接发送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 3
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 viewer中显示为十六进制数据,我面临的下一个问题是,字节数组中超过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;
}
希望这对某人有所帮助您确定这是发送数据的代码吗?看起来它收到了一些东西并在
系统上打印出来。out
。我觉得有点奇怪。您想在两个java进程之间通过网络连接进行通信,还是打算使用环回接口?(非主题)java命名约定是将类编写为UppercaseStartingCamelCase
,将字段/变量编写为lowercaseStartingCamelCase
。因此,您应该将Outdata
命名为Outdata
和Indata
和Indata
。另外,In
应该是In
而Out
应该是Out
。那么您希望“Out.write(Outdata);”以ISO 8583格式输出吗?但是PrintWriter是什么样的类呢?如果是普通的java.io.PrintWriter,那么它没有ISO 8583功能。