从输入流读取未知数据长度

时间:2017-06-20 13:15:02

标签: java sockets inputstream

我有一个系统随机将一些数据发送到tcp端口。

发送的数据如下:

<?xml version="1.0" encoding="UTF-8"?>
<Event> usefull XML data </EVENT>

我正在使用Java,通常我使用:

BufferedReader inFromClient =
           new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
        DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());

        while(true){
            clientSentence = inFromClient.readLine();
            if(clientSentence == null){
                break;
            }
            System.out.println("Received: " + clientSentence);
            //parse XML file
        }

<Event>部分并未以"\n"结尾,因此它仍然停留在inFromClient.readLine()

为了快速解决问题,我做了这个:

String valReadAux = "";
while(true){
    int val = sdf.read();
        if(val < 0){
            break;
        }
    valReadAux = valReadAux + ((char)val);
    if(valReadAux.contains("/EVENT>")){
        System.out.println(valReadAux);
    }
}

但这不是最好的解决方案,你能给我一个更好的策略吗?我也有Java 6的限制。

0 个答案:

没有答案