Tcp 如何处理服务器和客户端之间具有长度的消息?

Tcp 如何处理服务器和客户端之间具有长度的消息?,tcp,stream,packet,Tcp,Stream,Packet,如果服务器在发送实际消息之前发送消息的长度,例如: 5ABCDE10FGHIJKLMNO 其中,“5”是消息“ABCDE”的长度,“10”是消息FGHIJKLMNO的长度 根据缓冲区的大小,它能否以任何顺序到达客户机端 5A BCD E1 0FGHI JKLMNO 5ABCD E1 0F GHI JKLMNO 5A BC D E1 0F GHI JKLM NO ... so on i、 例如,当你们从插座读取数据时,你们会得到“5A

如果服务器在发送实际消息之前发送消息的长度,例如:

   5ABCDE10FGHIJKLMNO
其中,“5”是消息“ABCDE”的长度,“10”是消息FGHIJKLMNO的长度

根据缓冲区的大小,它能否以任何顺序到达客户机端

   5A BCD  E1  0FGHI  JKLMNO  
   5ABCD  E1  0F GHI  JKLMNO  
   5A BC D  E1  0F GHI  JKLM NO  
   ... so on
i、 例如,当你们从插座读取数据时,你们会得到“5A”,第二次读取时,你们会得到“BCD”。这有可能吗


如果是这样,我是否需要手动处理有关数据将如何到达的情况和可能性,即是否存在长度、消息是否完整等,以便将消息放在一起?

您可以尝试使用一组字符,当收到这些字符时,会指示客户端消息即将开始/完成。像HTML标签一样。两个问题的答案是:<代码>是/代码>。谢谢,有没有一个C++或java库来处理这个问题?取决于实际的消息格式。例如,一个真正的库不会期望长度头是ASCII字符。无论如何,从头开始编程是一个很好的练习。