想知道是否可以成功完成这样的事情:
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()
方法对我不起作用。
答案 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中标记数据,以便知道它是文本还是对象。