1

I try to write an application read and send data to Reuters TOF simulator.

I send a message to TOF server with file seperator (FS ASCII(28)) like here

 package tr.com.calikbank.bnspr.treasury.reutersClient;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;

public class Test {

    /**
     * @param args
     */

    public static final String FS = Character.toString((char) 28);
    public static final String US = Character.toString((char) 31);
    public static final String GS = Character.toString((char) 29);

    private static DataInputStream in;
    private static Socket sock;
    private static DataOutputStream out;

    public static void main(String[] args) throws UnknownHostException,
            IOException {
        // TODO Auto-generated method stub

        sock = new Socket("10.90.20.76", 5003);
        sock.setKeepAlive(true);

        in = new DataInputStream(sock.getInputStream());
        out = new DataOutputStream(sock.getOutputStream());

        String message = FS + "333" + US + "AE" + GS + "AAAA#1" + FS;

        out.flush();
        out.writeBytes(message);
        out.flush();

        // BufferedReader reader = new BufferedReader(new
        // InputStreamReader(sock.getInputStream()));
        StringBuilder sb = new StringBuilder();
        String line;

        // line = reader.readLine();
        while ((line = in.readLine()) != null) {
            sb.append(line).append("\n");
            if (line.isEmpty())
                break;

        }
        // line = in.readLine();
        // sb.append(line).append("\n");

        System.out.println("Message received from the server : "
                + sb.toString());

    }

}

<>

but the program stuck in while loop and when I stop server then return whole string but I need get without stop server. whats the problem.

my decision is readline has a problem with reference sth 5530xD0xA

thnx

  • server response like that 340AEAAAA#35010 5530xD0xA 5003 5011728 539 5406 50219 MAR 2015 50315:58:27 504SC 50516 NOV 2016 506 7:15:08 507SC 508TURK 509BANK YZ LONDON 510 511 513 5141 5692 – özgür arslan Nov 16 '16 at 11:50

1 Answers1

0
package tr.com.calikbank.bnspr.treasury.reutersClient;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;

public class Test {

    /**
     * @param args
     */

    public static final String FS = Character.toString((char) 28);
    public static final String US = Character.toString((char) 31);
    public static final String GS = Character.toString((char) 29);
    public static final String RS = Character.toString((char) 30);

    private static DataInputStream in;
    private static Socket sock;
    private static DataOutputStream out;

    public static void main(String[] args) throws UnknownHostException,
            IOException {
        // TODO Auto-generated method stub

        sock = new Socket("127.0.0.1", 5003);
        sock.setKeepAlive(true);

        in = new DataInputStream(sock.getInputStream());
        out = new DataOutputStream(sock.getOutputStream());

        String message = FS + "333" + US + "AE" + GS + "AAAA#1" + FS;
          //String message=FS+"332"+US+"XX"+GS+"AAAA#INFO"+FS;

        out.flush();
        out.writeBytes(message);
        out.flush();

        // BufferedReader reader = new BufferedReader(new
        // InputStreamReader(sock.getInputStream()));
        StringBuilder sb = new StringBuilder();

        int i=0;
        // line = reader.readLine();
        while (true)
        {
            byte[] inputData = new byte[5000];
            in.read(inputData);

            sb.append(new String(inputData));
            i++;
            if (i==3)
                break;

        }
        // line = in.readLine();
        // sb.append(line).append("\n");

        System.out.println("Message received from the server : "
                + sb.toString());

        String temps=new String(sb.toString());
        String temps2=new String(sb.toString());

        String[] partsUS = temps.split(US);

        for (int j=0;i<partsUS.length;i++)
        System.out.println(partsUS[i]); // 340


        String[] partsRS = temps2.split(RS);

        System.out.println("-----------");

        for (int j=0;j<partsRS.length;j++)
            System.out.println(partsRS[j]); // 340





    }

}