关于C++中的TCP通信中recv接收字符串的有关问题

关于C++中的TCP通信中recv接收字符串的问题
请教大家一个问题,我要用C++做通信,接收字符串的时候用recv函数,但是并不知道要接收字符串的长度,怎么设置缓冲区,怎么能完整的收到发来的字符串呢?谢谢
C++ 通信 TCP/IP

------解决方案--------------------
缓冲区?套接字缓冲区、网卡缓冲区、还是程序本身缓冲区?
>加消息头:标记此次数据大小
>使用recv直接收知道接收到的大小满足消息头大小停止.然后进行逻辑处理
不然消息无法正确分割