【发布时间】:2011-04-20 08:04:59
【问题描述】:
我们的服务器似乎是基于数据包的。它是对旧的基于串行的系统的改编。多年来,它已经被添加、修改、重建等。由于 TCP 是流协议而不是数据包协议,因此有时数据包会被分解。 ServerSocket的设计是这样的,当Client发送数据时,部分数据包含我们消息的大小,比如55。有时这些数据包被分成多个部分。它们按顺序到达,但由于我们不知道如何拆分消息,因此我们的服务器有时不知道如何识别拆分消息。
所以,已经给了你背景信息。如果数据包被拆分,那么重建数据包的最佳方法是什么?我们正在使用 C++ Builder 5(是的,我知道,旧 IDE,但这是我们目前可以使用的全部。在 .NET 或更新的技术中重新设计的工作量很大)。
【问题讨论】:
-
你说发送方包含了消息的大小,服务器不知道如何识别拆分消息。它是哪一个?如果你有大小,那么识别分割点很容易。
-
@Ben:是的,看起来就是这样。我问的主要是因为我试图说服其他工程师(服务器软件)他做错了。
-
如果服务器无法拆分消息,尽管每个消息都有长度,那他就错了。
标签: c++ client tcp c++builder-5