简单的Java TCP套接字协议

时间:2013-05-27 16:12:55

标签: java sockets serialization tcp protocols

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

#METHOD1#CLOSE#

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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()