Linux网络编程中,针对套接字读写的函数有很多,下面介绍一些函数的常见用法;这里介绍的函数都是linux系统中的特有函数,与C标准库中的IO函数存在一定的区别。
1、read() 和 write()函数
read() 和 write() 函数是Linux中最基本的读写函数,可以用于各种数据的读写。
/* 返回值:成功则为读取或写入的字节个数,失败为-1;
* 定义:
*/
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t nbyte);
ssize_t write(int fd, const void* buf, size_t nbytes);
/* 说明
* fd 为描述符,可以是文件描述符,也可以是套接字描述符;
* buf 用于存储读取或写入的数据;
* nbyte 记录字节数;
* 根据不同的应用情况,返回值可能小于请求的字节数
*/
一般来说,对于常规文件的读写不会阻塞,函数一定会在有限的时间内返回,但是从终端设备或网络读取时就不一定了,如果网络通信消息一直没有到达,那么读取函数就一直阻塞等待,终端还没有进行输入时,也是处于阻塞状态。返回的字节数包含换行符。
阻塞和非阻塞read/write ;
2、recv() 和 send() 函数
这两个函数类似于read() 和 write() 函数,但是这两个函数只用于套接字相关的数据处理。
/* 返回值:成功则为读取或写入的字节个数,失败为-1;
* 定义:
*/
#in