Java:可能有多种类型的流?

时间:2012-09-05 12:51:03

标签: java networking io stream protocols

想知道是否可以成功完成这样的事情:

Socket s = new Socket("", 1234);
BufferedInputStream in = new BufferedInputStream(s.getInputStream());
BufferedOutputStream out = new BufferedOutputStream(s.getOutputStream());
ObjectInputStream oin = new ObjectInputStream(s.getInputStream());
ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream());

或者,如果有更好的方法可以做到这一点。我问,因为我想通过缓冲的I / O流发送原始数据,并使用对象流作为一种通信细节和建立我的程序连接协议的方法。现在我正在尝试使用缓冲流并使用byte数组作为我的客户端/服务器协议但是我遇到了一个打嗝,我收到的byte数组不等于我的预期它是,所以==运算符和.equals()方法对我不起作用。

2 个答案:

答案 0 :(得分:3)

你不能使用混合流,因为它们都是缓冲的,所以你会受到腐败和混乱。

只需使用ObjectStream即可。

通常,您应该只读取或写入一个Stream,Reader或Writer来获取流。

答案 1 :(得分:2)

去看看How can I read different groups of data on the same InputStream, using different types of InputStreams for each of them?,看看我的回答是否有帮助。它涉及在ObjectStream中标记数据,以便知道它是文本还是对象。