0

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

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()方法做不适合我。

4

2 回答 2

3

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

只需将 ObjectStreams 用于所有内容。

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

于 2012-09-05T12:54:19.530 回答
2

去看看如何在同一个 InputStream 上读取不同的数据组,为每个数据使用不同类型的 InputStream?看看我那边的回答是否有帮助。它涉及在 ObjectStream 中标记数据,以了解它是文本还是对象。

于 2012-09-05T12:58:40.003 回答