2011-01-23 5 views
2

XMLSocketサーバーと通信しようとしています。私は以前はFlashアプリケーションでこれをやっていましたが、今はjavaでやりたいと思っています。 は、今私が使用しているコードは、問題は、明らかに、ソケットに書くことのprintlnを使用すると、サーバーが読み取り専用にすること、各ライン\ rをする\ nバイトの最後に追加することにある r nを追加せずにXMLSocketに書き込む

xmlsock = new Socket("127.0.0.1", 1012); 
out = new PrintWriter(xmlsock.getOutputStream(), true); 
out.println(this.jTextField1.getText()+'\u0000'); 

です私はそれに最初の行を送ります。 printlnの代わりにprintを使用しても、何も送信していないようです(サーバが受信した文字列はありません)。 文字列の最後に\ r \ nを追加することなく、文字列をサーバーに送る方法はありますか?

答えて

2

out.println()の代わりにout.print()を呼び出してみましたか?

あなたは文字の実際の書かれた流れに影響を与えることなく、ダンプするバッファを強制的にout.flush()を使用することができます(編集ああデュールは、私は...あなたが。まあ次の段落を読むことを言及参照します)。

out.print(this.jTextField1.getText()+'\u0000'); 
out.flush(); 
+0

をプリントを使用して代わりのprintlnのサーバーには何も送信しません:サーバーのログがあります空であり、交換機を見るためにソケットスニッファを使用しても、トラフィックは生成されません。 – kaharas

+0

PrintWriterインスタンスで '.flush()'を呼び出しましたか? – Pointy

+0

簡単なフラッシュは、仕事をしました、ありがとう:) – kaharas

2

PrintStreamの新しい行で自動フラッシュを使用しています。このため、データをフラッシュする必要はありません(理由)。しかし、改行の送信を避けたい場合は、flush()を自分で行う必要があります。

0

[PrintWriter(OutputStream out, boolean autoFlush)(http://download.oracle.com/javase/1.4.2/docs/api/java/io/PrintWriter.html#PrintWriter(にjava.io.OutputStream、ブール値))

autoFlush - ブール値。 trueの場合、println()方法は、出力バッファ

をフラッシュしますので、あなたは一緒にprint()flush()を使用する必要があります。

out.print(this.jTextField1.getText()+'\u0000'); 
out.flush(); 
関連する問題