为什么要循环接收数据长度?

问题描述 投票:0回答:1

我已经看到通过套接字接收数据的代码,其中包含两个循环:

  1. 接收数据长度
  2. 接收数据本身

...例如(请参阅这些答案):

...但是数据的长度没有数据本身那么大。那么这个“额外循环”只接收像

'1048'
这样的字符串的目标是什么?我相信可以在一个循环中与数据本身一起接收。

loops sockets delphi size delphi-10.4-sydney
1个回答
0
投票

TCP只是一个字节流,它没有消息的概念。因此,通常在发送消息本身之前发送消息的长度,以便接收者知道何时拥有完整的消息。套接字上的任何读取都可能返回比请求更少的字节,因此您通常需要一个循环来确保读取您期望的所有内容。因此,一个循环用于读取消息长度的字节,另一个循环用于读取消息的字节。

© www.soinside.com 2019 - 2024. All rights reserved.