2017-04-02 80 views
0

所以我试着学习SocketDataInputStreamjava,为什么DataInputStream拆分字符串时候空格

虽然我尝试很努力,我意识到,作为划分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。我该怎么办?

+0

我与重构的一点点测试程序(它不能这样编译),它运行良好。如果继续出现这些错误,请记住DataInputStream和DataOutputStream正在使用自定义的UTF实现,并且只能在Java应用程序之间使用它们进行通信。我会建议你,因为@Arun说使用Reader和Writer接口,但是明确指定他们使用的Charset。 – JAAAY

+0

'Syso'做什么? –

+1

“DataInputStream”和“DataOutputStream”都没有像这里声称的那样运行。很显然'Syso'是怪罪。 – EJP

回答

1

使用BufferedReader

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

或者可以替换System.out.printlnSystem.out.print不末打印新的行字符

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