我有一个代码,可以获取输入流并打印它。当我使用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();
我得到同样的错误。如何纠正错误?
可能有点太晚了,但这里有一个答案。在下面的代码中,不应编写:
Socket socket = new Socket("host", port);
套接字需要 IP 地址而不是名称。它应该是例如:
Socket socket = new Socket("192.168.0.87", port);