2011-01-23 64 views
2

我試圖與一個XMLSocket服務器進行通信:我曾經用flash應用程序來做這件事,但現在我試圖用java來做到這一點。 現在我正在使用的代碼是在不添加的情況下寫入XMLSocket r n

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

的問題是,很明顯,使用的println在插槽中,寫在每行\ r \ n個字節的末尾添加,使服務器只讀我發送給它的第一行。使用print而不是println似乎根本沒有發送任何東西(服務器沒有收到字符串)。 那麼,有沒有辦法將字符串發送到服務器,而不在字符串的末尾添加\ r \ n?

回答

2

您是否嘗試過撥打out.print()而不是out.println()? (編輯哦杜爾,我看到你提到好吧閱讀下一段......)

您可以使用out.flush()強制緩衝區,而不會影響實際字符寫入流傾倒。

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

:服務器日誌空,甚至使用套接字嗅探器來查看交換,則不會創建流​​量。 – kaharas 2011-01-23 14:29:18

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()在一起:使用打印代替的println不發送任何內容到服務器

out.print(this.jTextField1.getText()+'\u0000'); 
out.flush(); 
相關問題