Я пытаюсь отправить сообщения ISO8583, созданные с помощью библиотеки JPOS на Java. Что я сделал, написан простой код подключения сокета для отправки сообщения. Я могу отправить сообщение успешно, но проблема в том, что сервер отправляет ответ вовремя, но сообщение не читается моим клиентским сокетом. Он считывает данные только после того, как я принудительно закрою соединение (отключите сокет вручную) на сервере.Сообщение считывается только клиентом после закрытия сервера конца соединения в java
Мне нужно отправить более 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) + "");
}
}
Промыть буфер – MadProgrammer
Какой буфер вы говорите о –
Сервер может отправлять сообщение переменной длины, чтобы как можно решить клиент. –