2013-03-22 29 views
2

我想使用DataInputStream從A發送幾個字符串到B.使用DataInputStream和DataOutputStream

我知道如何使用.write()發送這些信息,但我不確定分離字符串的最佳方法。事實上 - 在研究之後,除非我在字符串中添加字符並在B處分割,否則似乎不可能。

將考慮使用DataInputStream的任何替代方法。我打算創建一個Array併發送,雖然我不知道該怎麼做。

到目前爲止,我有:

public String getDetails() {  
System.out.print("Name: "); 
String uiname = scan.next(); 
pout.write(uiname); 

System.out.print("Address: "); 
String uiaddress = scan.next(); 

pout.write(uiaddress); 

return ""; 

}

+0

什麼是'A'&'B'? – SudoRahul 2013-03-22 14:35:33

+0

客戶端和服務器 – 2013-03-22 14:36:17

+0

使用'DataInput-/OutputStream'時出現什麼問題?如果你使用它,你發送的是二進制數據。不需要將字符串作爲單個對象發送。 – Zhedar 2013-03-22 14:39:04

回答

2

只要你的字符串長< 65536個字符,你可以使用DataOutputStream.writeUtf()DataInputStream.readUTF()。如果你需要比字符串和原語更復雜的東西,你需要使用ObjectOutputStreamObjectInputStream

實施例(其可以包含語法錯誤):

DataOutputStream out = new DataOutputStream(...); 
out.writeUtf("foo"); 
out.writeUtf("bar"); 
out.close(); 

DataInputStream in = new DataInputStream(...); 
String s1 = in.readUtf(); 
String s2 = in.readUtf(); 
// that's all, folks! 

writeUtf()方法preceeds與它的字符的計數的字符串。 readUtf()方法首先獲取字符數,然後精確讀取許多字符。只要你只是寫/讀字符串,這些流可以找出它。

1

兩個想法:

  • 使用DataOutputStream.writeUTFDataInputStream.readUTF

  • 使用像JSON(或XML) 「保持件」 的形式,建立一個JSON數組,你 「打印」 然後解碼,另一結束使用衆多庫中的任何一個來執行此操作(JSON庫json.org已足夠完成該任務)

+0

爲什麼對象流? DataInput/OutputStreams有這些方法。 – EJP 2013-03-23 00:56:36

+0

是的。我正在考慮編寫對象實例,並沒有意識到它在父類上可用 – 2013-03-23 06:31:58

+0

更正了答案 – 2013-03-23 09:40:38

相關問題