Java BufferedReader readLine()具有奇怪的字符

Java BufferedReader readLine()具有奇怪的字符,java,sockets,console,Java,Sockets,Console,我在从套接字写入和读取数据时发现了一个问题,此时套接字已经打开 来自服务器的代码: <pre>ServerSocket server = new ServerSocket(2001); Socket socket = server.accept(); while(true){ BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); String re

我在从套接字写入和读取数据时发现了一个问题,此时套接字已经打开

来自服务器的代码:

<pre>ServerSocket server = new ServerSocket(2001);
Socket socket = server.accept();
while(true){
    BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    String readString = br.readLine();
    System.out.println("result:\n"+readString)
}</pre>
serversocketserver=newserversocket(2001);
Socket=server.accept();
while(true){
BufferedReader br=新的BufferedReader(新的InputStreamReader(socket.getInputStream());
String readString=br.readLine();
System.out.println(“结果:\n”+readString)
}
我从一个客户那里做的测试

Socket-Socket=新套接字(“localhost”,2001);
扫描仪控制台读取=新扫描仪(System.in);
consoleRead.useDelimiter(“\n”);
ObjectOutputStream oo=新的ObjectOutputStream(socket.getOutputStream());
while(true){
字符串s=consoleRead.next();
writeUTF(s+System.lineSeparator());
oo.flush();
}
第一行读得很好。。。但其余的都是从奇怪的角色开始的


如果您使用
ObjectOutputStream
写作,请使用
ObjectInputStream
而不是
InputStreamReader
阅读

writeUTF()

以修改的UTF-8格式写入此字符串的基本数据。请注意,将字符串作为基本数据或对象写入流中有很大区别。writeObject编写的字符串实例最初作为字符串写入流中。Future writeObject()调用将对字符串的引用写入流

更好的方法是:-使用
OutputStreamWriter
编写,使用
InputStreamReader


为了更好地理解:-使用
ObjectOutputStream
在文件中写入相同的内容,然后检查要写入的内容。

我认为您在第一种情况下说的是OutputStreamWriter
<pre>Socket socket = new Socket("localhost", 2001);            
Scanner consoleRead= new Scanner(System.in);
consoleRead.useDelimiter("\n");
ObjectOutputStream oo = new ObjectOutputStream(socket.getOutputStream());
while(true){
    String s = consoleRead.next();
    oo.writeUTF(s+System.lineSeparator());
    oo.flush(); 
}</pre>