《数据的IO和复用》PPT课件

《数据的IO和复用》PPT课件

ID:41223091

大小:514.01 KB

页数:37页

时间:2019-08-19

《数据的IO和复用》PPT课件_第1页
《数据的IO和复用》PPT课件_第2页
《数据的IO和复用》PPT课件_第3页
《数据的IO和复用》PPT课件_第4页
《数据的IO和复用》PPT课件_第5页
资源描述:

《《数据的IO和复用》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第9章数据的IO和复用主要包含如下内容:介绍常用的IO函数recv()/send()、readv()/writev()、recvmsg()/sendmsg(),并讲解函数的主要应用的场合,例如recvmsg()可以用于接收在多个缓冲区中,可以设置选项。用几个简单的例子,说明如何使用上述函数进行程序的设计。介绍常用的几种IO模型,以图形式的方法形象的进行了说明。介绍select()和pselect()函数、如何使用这两个函数进行文件描述符读写条件的监视。简单介绍函数poll()和ppoll()的含义、使用和区别。以简单的例子介绍非阻塞编程的方

2、法。9.1IO函数Linux操作系统中的IO函数主要有read()、write()、recv()、send()、recvmsg()、sendmsg()、readv()、writev()。本节对上述的主要函数进行介绍,其中的read()和write()函数在前面已经介绍过。9.1.1使用recv()接收数据函数recv()用于接收数据,函数原型如下。函数recv()从套接字s中接收数据放到缓冲区buf中,buf的长度为len,操作的方式由flags指定。第一个参数s是套接口文件描述符,它是由系统调用socket()返回的。第二个参数buf是一

3、个指针,指向接收网络数据的缓冲区。第三个参数len表示接收缓冲区的大小,以字节为单位。#include#includessize_trecv(ints,void*buf,size_tlen,intflags);9.1.2使用send()发送数据函数send()用于发送数据,函数原型如下。函数send()将缓冲区buf中大小为len的数据通过套接字文件描述符按照flags指定的方式发送出去。当send函数的返回值小于len的时候,表明缓冲区中仍然有部分数据没有成功发送,这时需要重新发送剩余

4、部分的数据。通常的剩余数据发送方法是对原来的buf中的数据位置进行偏移,偏移的大小为以发送成功的字节数。#include#includessize_tsend(ints,constvoid*buf,size_tlen,intflags);9.1.2使用send()发送数据值含义EAGAIN/EWOULDBLOCK套接字定义为非阻塞,而操作采用了阻塞方式,或者定义的超时时间已经达到却没有接收到数据EBADF参数s不是合法描述符ECONNREFUSED远程主机不允许此操作EFAULT接收缓冲

5、区指针在此进程之外EINTR在发送数据之前接收到中断信号EINVAL传递了不合法参数ENOTCONN套接字s表示流式套接字,此套接字没有连接ENOTSOCK参数不是套接字描述符ECONNRESET连接断开EDESTADDRREQ套接字没有处于连接状态ENOBUFS发送缓冲区已满ENOMEM没有足够内存EOPNOTSUPP设定的发送方式flag没有实现EPIPE套接字已经关闭EACCES套接字不可写9.1.3使用readv()接收数据函数readv()可用于接收多个缓冲区数据,函数原型如下。函数readv()从套接字描述符s中读取count块

6、数据放到缓冲区向量vector中#includessize_treadv(ints,conststructiovec*vector,intcount);值含义EAGAIN套接字定义为非阻塞,而操作采用了阻塞方式,或者定义的超时时间已经达到却没有接收到数据EBADF参数s不是合法描述符ECONNREFUSED远程主机不允许此操作EFAULT接收缓冲区指针在此进程之外EINTR接收到中断信号EINVAL参数iov_len超出了ssize_t类型的范围,或者count参数小于0或者大于可允许最大值ENOTCONN套接字s表示

7、流式套接字,此套接字没有连接ENOTSOCK参数不是套接字描述符9.1.3使用readv()接收数据9.1.4使用writev()发送数据函数writev()可用于接收多个缓冲区数据,函数原型如下。函数writev()向套接字描述符s中写入在向量vector中保存的count块数据。#includessize_twritev(intfd,conststructiovec*vector,intcount);9.1.5使用recvmsg()接收数据函数recvmsg()用于接收数据,与recv()函数、readv()函数相

8、比较,这个函数的使用要复杂一些。1.函数recvmsg()原型含义2.地址结构msghdr3.函数recvmsg()用户空间与内核空间的交互9.1.5使用recvmsg()接收数

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。