3

我正在做一个套接字项目。我想用 TCP 发送 ~4kb 数据。我需要在这里问一个问题。那就是:如果我用 TCP 发送 ~4kb 数据,我的数据处理函数可以再接收一次这个数据吗?即 RECEIVE(server-side) 函数可以返回 2 次(如果我发送一次 ~4kb 数据)?如果我能理解这一点,我将开始制作自己的数据包处理系统。

4

2 回答 2

3

简而言之:是的。

TCP 传输字节流,在 TCP 连接中没有提及消息(及其边界)。即使您发送两个字节,它们也可以在两个单独的块中接收(当然理论上;实际上不太可能)。因此,您应该在数据流中添加一些标记。我建议在每条消息之前写一个“消息头”,其中标头至少包含以下消息正文的长度。并且要注意,header 本身也可能在接收时被分片。

于 2013-06-15T14:21:44.030 回答
0

TCP 是一种流协议。您会按照发送顺序接收字节流。要重建消息,您应该在每条消息前面加上消息的长度,或者使用分隔符来标记消息的结尾。

我不知道您的业务需求,但您可以使用像MQTT这样的二进制协议或像STOMP这样的基于文本的协议。

于 2014-01-25T00:17:55.190 回答