Linux网络编程基础3:数据读写

Linux网络编程基础3:数据读写_第1张图片

1.TCP数据读写

首先,read()和write()函数同样适用于socket。而socket编程接口停工了几个专门用于socket数据读写的系统调用,增加了对读写的控制。而TCP流数据读写的系统调用是:

#include
#include
ssize_t recv(int sockfd,void *buf,size_t len,int flags);
ssize_t send(int scokfd,const void * buf,size_t len,int flags);
  • sockfd:读写sockfd上的数据
  • buf:读写缓冲区的位置
  • len:读写缓冲区的大小
    recv()函数成功时返回读取到实际的数据长度,它可能小于我们期望的长度len,所以要反复读取,才能获得完整的数据。recv返回0,说明的发送端已经关闭连接了。出错时返回-1并设置errno。
    send()函数成功时返回写入的数据长度,失败则返回-1并设置errno。
    flag参数提供了额外的控制:
    | | | | recv | send |
    | | | | | |
    |–|--|–|--|–|
    | 1 | | | | |
num 选项名称 含义 recv send
1 MSG_CONFIRM
2
3
4
5
6
7
8

2.UDP数据读写

3.通用数据读写

你可能感兴趣的:(linux,网络,udp)