我正在尝试在java中实现客户端服务器
我在插座之间建立连接
并将JSON对象作为字符串发送到流上
如果我有一个大的对象是有办法处理它
所以我不必重新组合它,因为tcp数据包的限制大小(无法知道单个对象何时作为客户端完全转移给我)
注意:我正在使用G-son将对象转换为JSON对象
答案 0 :(得分:1)
如果我有大对象是有办法处理它,所以我不必重新组合它,因为tcp数据包的限制大小。 (我不知道单个对象何时作为客户完全转移给我)
实际上,客户端可以知道它何时收到完整的JSON对象。当您的客户看到与开头}
匹配的{
时,您就拥有了完整的对象。当然,这意味着您的客户端需要了解JSON语法,但您可以使用现成的JSON解析器来执行此操作。
因此,最好的方法是让服务器生成并发送JSON,并使用普通的JSON解析器解析套接字输入流。如果你这样做,那么你不需要知道TCP / IP堆栈是否已将数据流分成多个数据包。当JSON解析器看到它们时,它们将被重新组装成一个字节流。
如果这不能解答您的问题,我们需要查看您的代码当前正在做什么来生成并在服务器端发送JSON。
答案 1 :(得分:0)
有没有办法处理它所以我不必重新组合它,因为tcp数据包的限制大小
您不必关心TCP数据包的大小。只需写入数据。 TCP将为您进行分段和打包。
(无法知道单个对象何时作为客户完全转移给我)
是的,你可以。正如@StephenC提到的那样,你到达了结束时间'}'}。在任何情况下,您的JSON解析器都应该为您服务。
你的问题是基于错误的假设。