BSD Socket 读取数据的相关有关问题

BSD Socket 读取数据的相关问题
刚刚研究网络这一块,有些东西还不太懂,向大家请教一下:
关于read函数,由服务端发来的一个数据,我可以分多次去read吗?就是每次只读取一部分。如果可以 该怎么写代码呢,给个简单的代码也ok
比如说,服务端发给客户端的数据大概在300-500个字节,长度不确定,用前4个字节标识了长度,我可以先读前四个字节,再根据这个长度去读后面的数据吗?还是一个数据只能对应一个read函数?

------解决方案--------------------
可以分多次去recv,recv接受4个参数,最后一个参数为0 表示将读完的数据从流中删除,下次recv的时候接着往后读
recv和send是linux的函数
read和write是C的函数