2013-05-26 80 views
1

当通过套接字连续写入/读取数据集时,如何识别1套的结尾,下一套的开始,以及如果整个套件甚至在流中用于检索,而不仅仅是一块呢?Java中的套接字流

让事情变得简单让我们说我正在通过套接字发送JSON字符串。我如何知道整个对象是否在那里,并从头到尾地获取该对象,以便我可以正确读取它?请记住,这个背后可能有更多的物体。

+0

你能提供一些代码吗? – 3yanlis1bos

+1

如果您使用Jackson,您可以告诉JsonParser在读取JSON值时不会自动关闭输入流。 – fge

回答

1

这取决于。如果您使用ObjectOutputStream,那么Java会为您处理此问题。显然这是Java特定的,并且需要你在另一边有一个ObjectInputStream。它也期望你发送可序列化的对象到另一端。 String然而,它是一个可序列化的对象,我一般会期望任何数据结构都是可序列化的。

否则,你将不得不自己考虑某种容器格式。现在,使用XML结构将数据串行化也是很常见的。如果你达到更高的水平,你就可以使用网络服务。

+0

“数据容器”可能比“数据结构”更好的名称,但名字自从大学很久以前就被卡住了...... –

+0

有趣的是,通过使用对象输入/输出流,它们将确保我得到一个完整的对象或无?所以他们会确保整个对象都被写入和接收,一起?所以我不需要担心1/2物体? – WIllJBD

+0

美丽的感谢。 – WIllJBD