我一直在尝试发送用 Java 中的 JPOS 库创建的 ISO8583 消息。我所做的是编写了一个简单的套接字连接代码来发送消息。我能够成功发送消息,但问题是服务器按时发送响应,但我的客户端套接字未读取消息。它仅在我在服务器上强制关闭连接(手动断开套接字)后读取数据。
我需要通过同一个连接发送超过 100 条消息并接收它们的响应。我可以做些什么来完成这项工作并让客户端在服务器发送它时立即读取每条消息?
这是我的发送示例代码:
logISOMsg(isoMsg);
byte[] send_PackedRequestData = isoMsg.pack();
BufferedOutputStream outStream=null;
BufferedReader receiveStream=null;
Socket connection = new Socket("127.0.0.1", 5874);
if (connection.isConnected()) {
outStream = new BufferedOutputStream(connection.getOutputStream());
outStream.write(send_PackedRequestData);
outStream.flush();
}
和阅读:
if (connection.isConnected()) {
receiveStream = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String isoMessage = receiveStream.readLine();
ISOMsg isoMsg1 = new ISOMsg();
isoMsg1.setPackager(packager);
byte[] bIsoMessage = new byte[isoMessage.length()];
for (int i = 0; i < bIsoMessage.length; i++) {
bIsoMessage[i] = (byte) (int) isoMessage.charAt(i);
}
isoMsg1.unpack(bIsoMessage);
System.out.println("MTI='"+isoMsg1.getMTI()+"'");
for (int i=1; i<=isoMsg1.getMaxField(); i++) {
if (isoMsg1.hasField(i))
System.out.println("DE : "+ i + " = " + isoMsg1.getString(i) + "");
}
}