一个发送可以分成多个接收吗?

har*_*haa 3 c sockets

我正在学习 C 套接字编程,并且在在线教程中遇到了这段代码

服务器.c:


    //some server code up here
    recv(sock_fd, buf, 2048, 0);
    //some server code below

Run Code Online (Sandbox Code Playgroud)

客户端.c:


    //some client code up here 
    send(cl_sock_fd, buf, 2048, 0);
    //some client code below

Run Code Online (Sandbox Code Playgroud)

服务器会在单个 recv 调用中接收所有 2048 个字节还是可以将发送分解为多个接收调用?

Som*_*ude 5

TCP 是一种流协议,没有数据包的消息边界。一个send可能需要多个recv调用,或者多个send调用可以合并为一个recv调用。

您需要recv循环调用,直到收到所有数据。