0

我试图找到一种可靠的方法来发送遵循定义协议的控制消息,以便告诉服务器他将收到什么样的数据。例如,我想发送纯文本消息来调用远程方法:

#METHOD1#CLOSE#

或者我想向服务器发送一个序列化对象:

#OBJECT# .......here comes the serialized object data....#CLOSE#

所以基本上我只想发送完全独立于随后的流内容的字符串控制消息。

通过将输入流包装到 Scanner 对象中,我可以从输入流中提取字符串,但如果此流是序列化对象,则之后无法恢复该对象。谢谢你的帮助。

4

1 回答 1

1

您可以使用 Base64 之类的方案(例如,使用 Apache 的库)将对象从字节编码为字符串,然后再返回。

ByteArrayOutputStream baos = new ByteArrayOutputStream();
new ObjectOutputStream(baos).writeObject(object);
String serializedObject = Base64.encode(baos.toByteArray());

byte[] bytes = Base64.decode(serializedObject);
ByteArrayInputStream baos = new ByteArrayInputStream(bytes);
Object object = new ObjectInputStream(baos).readObject()
于 2013-05-27T16:36:31.720 回答