Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java-通过网络为iso8583发送数据_Java - Fatal编程技术网

java-通过网络为iso8583发送数据

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

我正在尝试通过网络连接发送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 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功能。