使用DataInputStream时Java中字节周围的格式错误的输入

问题描述 投票:0回答:1

我有一个接受输入流并打印的代码。当我使用BufferedReader时,代码在控制台中打印流,但是当我使用DataInputStream时,出现以下错误:

Exception in thread "main" java.io.UTFDataFormatException: malformed input around byte 6351
    at java.io.DataInputStream.readUTF(DataInputStream.java:656)
    at java.io.DataInputStream.readUTF(DataInputStream.java:564)
    at Test.main(Test.java:14)

代码如下:

public class Test {

        public static void main(String[] args) throws IOException {
            Socket socket = new Socket("host", port);
            DataInputStream in       =  null;
    //        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            in = new DataInputStream(socket.getInputStream());
            while(true){
    //            System.out.println(bufferedReader.readLine());
                System.out.println(in.readUTF());
            }
        }
    }

[另外,当我将readLine()DataInputStream一起使用时,intellij显示它已弃用。最后,我需要读取流并将其逐行传递给另一个方法,如下所示:

line = in.readUTF();

我遇到相同的错误。如何纠正错误?

java datainputstream
1个回答
0
投票

可能为时已晚,但这是一个答案。在以下代码中,您不应编写:

Socket socket = new Socket("host", port);

套接字需要IP地址而不是名称。例如:

Socket socket = new Socket("192.168.0.87", port);
© www.soinside.com 2019 - 2024. All rights reserved.