【发布时间】:2013-02-07 22:15:12
【问题描述】:
我目前有一个在 TCP 套接字上侦听和发送的程序。
我遇到的问题是我发送了一个数据包,有时它会分解成碎片。所以我的监听 TCP 套接字类认为进来的第一部分是整个有效负载。
人们在使用 TCP 连接进行编程时采用的典型方法是什么?
【问题讨论】:
-
TCP 是一个面向流的协议。您不应该考虑数据包。有关我今天早上回答的类似问题,请参阅 stackoverflow.com/questions/14745716。
-
在发送确保收到完整对象的对象后发送一些代码字符串怎么样?
-
@JonSkeet 好吧,如果我发送了一个(我们会说)标头来说明“流”有多长。我们如何才能确定我们的“标题”是一体成型的。我的服务器应该不知道我的流有多大。所以我的客户需要告诉它。
-
@Mrshll187:你不能——但你通常会知道它有多长。 (例如,您总是发送 32 位长度的四个字节。)您可以继续阅读,直到您读完所有四个字节,此时您将知道您需要为消息读取多少其他数据.
-
好的,这正是我需要听到的。谢谢@JonSkeet