Java-senden Nachricht zwischen server und client ohne newline-Zeichen

Ich habe einen client, der eine Verbindung zu einem server. Die server-und die client-exchange-Daten im string-format. Das problem ist, dass der server nicht mit einem '\n' - Zeichen am Ende der Nachricht, und weil dieser der client blockiert, in readLine() Methode. Leider ist die server-Seite können nicht geändert werden. Wie kann das Lesen aus stream diese Art von Nachricht, die nicht '\n' am Ende?

My client code:

public class json 
{

    private static Socket socket;

    public static void main(String args[])
    {

        String sendMessage = "";

        Gson gson = new Gson();
        JSON_package authentication = new JSON_package();
        authentication.setType("Identifying");
        authentication.setSource("exampleClient");

        Package_Parser pp = new Package_Parser();

        sendMessage = gson.toJson(authentication);


        sendMessage = authentication.buildPackage(sendMessage);

        try
        {
            String host = "host_address";
            int port = port_number;
            InetAddress address = InetAddress.getByName(host);

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

            socket = new Socket(address, port);
            System.out.println("Connected.");

            //Send the message to the server
            OutputStream os = socket.getOutputStream();
            OutputStreamWriter osw = new OutputStreamWriter(os);
            BufferedWriter bw = new BufferedWriter(osw);
            bw.write(sendMessage);
            bw.flush();
            System.out.println("Message sent to the server : "+sendMessage);

            //Get the return message from the server
            InputStream is = socket.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            StringBuffer buffer = new StringBuffer();
            String message = br.readLine();

            message = pp.Parser(message);

            System.out.println("Message received from the server : " +message);
        }
        catch (Exception exception) 
        {
            exception.printStackTrace();
        }
        finally
        {
            //Closing the socket
            try
            {
                socket.close();
                System.out.println("Closed.");
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
        }
    }
}
  • Was ist der EOF?
  • Lesen Sie das Ergebnis mit read(char[] cbuf, int off, int len) Methode. Und parsing-es-zu-string-manuell
InformationsquelleAutor Genesist | 2013-07-17
Schreibe einen Kommentar