我已经看到通过套接字接收数据的代码,其中包含两个循环:
...例如(请参阅这些答案):
...但是数据的长度没有数据本身那么大。那么这个“额外循环”只接收像
'1048'
这样的字符串的目标是什么?我相信可以在一个循环中与数据本身一起接收。
TCP只是一个字节流,它没有消息的概念。因此,通常在发送消息本身之前发送消息的长度,以便接收者知道何时拥有完整的消息。套接字上的任何读取都可能返回比请求更少的字节,因此您通常需要一个循环来确保读取您期望的所有内容。因此,一个循环用于读取消息长度的字节,另一个循环用于读取消息的字节。