TCP数据读写

TCP数据读写函数

1
2
3
4
5
#include <sys/types.h>
#include <sys/socket.h>

ssize_t recv(int sockfd, void * buf, size_t len, int flags);
ssize_t send(int sockfd, void * buf, size_t len, int flags);

recv函数介绍

参数介绍

recv读取sockfd上的数据,buf和len参数分别指定读缓冲区的位置和大小,flags参数通常设置为0.

返回值

recv函数成功时,返回实际读取到的数据的长度,它可能小于我们期望的长度len。因此需要多次调用recv,才能读取到完整的数据。recv可能返回0,这意味着通信对方已经断开了连接。recv出错时,返回-1并设置errno。

send函数介绍

参数介绍

send函数往sockfd上发送数据,buf和len分别指定发送缓冲区的位置和大小,flags参数一般设置为0。

返回值

send成功时,返回实际写入到sockfd的数据长度。失败时,返回-1并设置errno。

flags参数总结

flags参数为数据收发提供了额外的控制。具体可以见下表,在使用的时候可以选择选项中的一个或多个的逻辑或。

image