java,为什么 DataInputStream 在空格时拆分字符串

java, why DataInputStream split String when whitespace

所以我尝试学习SocketDataInputStream

虽然我尝试了很多次,但我意识到 DataInputStream 读取字符串是分开的,意思是这样的:

客户端:

dos = new DataOutputStream(socket.getOutputStream());

String msg = "okay test some String"

dos.writeUTF(msg);

服务器端:

dis = new DataInputStream(socket.getInputStream());

while(true){

    msg = dis.readUTF();

    Syso(msg);

}

结果:

okay

test

some

String

我想用一行完整地阅读 msg。我该怎么办?

使用BufferedReader

dis = new BufferedReader(new InputStreamReader(socket.getInputs()))
while(true){
   msg = dis.readLine() 
   System.out.println(msg);
}

或者您可以将 System.out.println 替换为 System.out.print,它不会在末尾打印换行符

dis = new DataInputStream(socket.getInputStream());
while(true){
   msg = dis.readUTF();
   System.out.print(msg+" ");
}