2017-04-02 10 views
0

SocketDataInputStreamを覚えようとしました。Java、なぜ空白時に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); 

} 

私はかなりの試みをしようとしながら

は、私は分割として DataInputStream読み取り文字列は、次のように意味することを実現しました 結果:

okay 

test 

some 

String 

私はmsgを完全に1行に読みたいと思います。私は何をすべきか?

+0

末尾に改行文字を印刷しないSystem.out.printSystem.out.printlnを置き換えることができます(これをこのようにコンパイルすることはできません)、うまく動作します。これらのエラーが引き続き発生する場合は、DataInputStreamとDataOutputStreamがカスタムUTF実装を使用しており、Javaアプリケーション間の通信にのみ使用できることに注意してください。 @ArunはReaderとWriterのインターフェースを使用するように言っていますが、使用する文字セットを明示的に指定することをお勧めします。 – 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); 
} 

それとも、私はリファクタリングの少しを使用してプログラムをテストし

dis = new DataInputStream(socket.getInputStream()); 
while(true){ 
    msg = dis.readUTF(); 
    System.out.print(msg+" "); 
} 
関連する問題