2017-04-02 81 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+" "); 
} 
相關問題