BufferedReader readLine()有奇怪的字符

时间:2015-02-19 11:45:48

标签: java sockets console

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

来自服务器的代码:

<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>

我从客户那里做的测试

<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>

第一行读得很完美......但其余部分以奇怪的字符开头。

此致

1 个答案:

答案 0 :(得分:0)

如果您使用ObjectOutputStream撰写,请使用ObjectInputStream InputStreamReader {}进行阅读

writeUTF()

以修改的UTF-8格式写入此String的原始数据。请注意,将String作为基元数据或作为Object写入流中之间存在显着差异。 writeObject编写的String实例最初以String形式写入流中。将来的writeObject()将对字符串的写入引用调用到流中。

更好的是: - 使用OutputStreamWriter撰写并使用InputStreamReader

阅读

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