2013-03-22 79 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