是否在TCP标准范围内,从服务器到客户端连续发送的多条消息将被客户端以相同的顺序接受(并且一条消息的字节不会分散在其他消息中)?
答案 0 :(得分:1)
TCP提供有序字节流传递服务。字节不会以另一个顺序到达,但写入次数不必等于读取次数。
答案 1 :(得分:0)
TCP使用序列号来标识数据的每个字节。序列号标识从每台计算机发送的字节的顺序,以便可以按顺序重建数据,而不管传输过程中可能发生的任何碎片,无序或丢包。
答案 2 :(得分:0)
我同意@cnicutar。
您如何反序列化对象?我怀疑那里存在问题。
例如,如果您的消息是
ABCD
后来PQR
跟踪了200分钟。它可能显示为:
ABC
后跟PQR
ABCDPQR
AB
后跟CD
,然后是PQ
,后跟R
。基本上,您无法根据接收数据的时间做出假设。
反序列化逻辑应该知道字节流中的对象边界。该信息应由序列化逻辑编码到流中。
如果您使用的是Java,则可以使用ObjectInputStream
& ObjectOutputStream
并且不会对序列化问题感到困扰。
J2ME Polish有一个很好的序列化实用程序,可以很容易地移植到其他平台。我自己在现场环境中使用它。