BufferedReader readLine() 有奇怪的字符
BufferedReader readLine() have weird characeters
我在从套接字写入和读取数据时发现了一个问题,此时套接字已经打开。
来自服务器的代码:
<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>
第一行读起来很完美...但其余部分以奇怪的字符开头。
此致
如果你用 ObjectOutputStream
写作,那么用 ObjectInputStream
代替 InputStreamReader
阅读
writeUTF()
以修改后的 UTF-8 格式写入此字符串的原始数据。请注意,将字符串作为原始数据或作为对象写入流中存在显着差异。 writeObject 写入的 String 实例最初作为 String 写入流中。未来的 writeObject() 调用将对字符串的引用写入流中。
更好的是:- 用 OutputStreamWriter
写,用 InputStreamReader
读
为了更好地理解:- 使用 ObjectOutputStream
在文件中写入相同的内容,然后检查写入的内容。
我在从套接字写入和读取数据时发现了一个问题,此时套接字已经打开。
来自服务器的代码:
<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>
第一行读起来很完美...但其余部分以奇怪的字符开头。
此致
如果你用 ObjectOutputStream
写作,那么用 ObjectInputStream
代替 InputStreamReader
writeUTF()
以修改后的 UTF-8 格式写入此字符串的原始数据。请注意,将字符串作为原始数据或作为对象写入流中存在显着差异。 writeObject 写入的 String 实例最初作为 String 写入流中。未来的 writeObject() 调用将对字符串的引用写入流中。
更好的是:- 用 OutputStreamWriter
写,用 InputStreamReader
为了更好地理解:- 使用 ObjectOutputStream
在文件中写入相同的内容,然后检查写入的内容。