- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章节 数据的IO和复用
第9章 数据的IO和复用 主要包含如下内容: 介绍常用的IO函数recv()/send()、readv()/writev()、recvmsg()/sendmsg(),并讲解函数的主要应用的场合,例如recvmsg()可以用于接收在多个缓冲区中,可以设置选项。 用几个简单的例子,说明如何使用上述函数进行程序的设计。 介绍常用的几种IO模型,以图形式的方法形象的进行了说明。 介绍select()和pselect()函数、如何使用这两个函数进行文件描述符读写条件的监视。 简单介绍函数poll()和ppoll()的含义、使用和区别。 以简单的例子介绍非阻塞编程的方法。 9.1 IO函数 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是一个指针,指向接收网络数据的缓冲区。第三个参数len表示接收缓冲区的大小,以字节为单位。 #include sys/types.h #include sys/socket.h ssize_t recv(int s, void *buf, size_t len, int flags); 9.1.2 使用send()发送数据 函数send()用于发送数据,函数原型如下。函数send()将缓冲区buf中大小为len的数据通过套接字文件描述符按照flags指定的方式发送出去。当send函数的返回值小于len的时候,表明缓冲区中仍然有部分数据没有成功发送,这时需要重新发送剩余部分的数据。通常的剩余数据发送方法是对原来的buf中的数据位置进行偏移,偏移的大小为以发送成功的字节数。 #include sys/types.h #include sys/socket.h ssize_t send(int s, const void *buf, size_t len, int flags); 9.1.2 使用send()发送数据 9.1.3 使用readv()接收数据 函数readv()可用于接收多个缓冲区数据,函数原型如下。函数readv()从套接字描述符s中读取count块数据放到缓冲区向量vector中 #include sys/uio.h ssize_t readv(int s, const struct iovec *vector, int count); 9.1.3 使用readv()接收数据 9.1.4 使用writev()发送数据 函数writev()可用于接收多个缓冲区数据,函数原型如下。函数writev()向套接字描述符s中写入在向量vector中保存的count块数据。 #include sys/uio.h ssize_t writev(int fd, const struct iovec *vector, int count); 9.1.5 使用recvmsg()接收数据 函数recvmsg()用于接收数据,与recv()函数、readv()函数相比较,这个函数的使用要复杂一些。 1.函数recvmsg()原型含义 2.地址结构msghdr 3.函数recvmsg()用户空间与内核空间的交互 9.1.5 使用recvmsg()接收数据 9.1.6 使用sendmsg()发送数据 函数sendmsg()可用于接收多个缓冲区数据,函数原型如下。函数sendmsg()向套接字描述符s中按照结构msg的设定写入数据,其中操作方式有flags指定。 #include sys/uio.h ssize_t sendmsg(int s, const struct msghdr *msg, int flags); 9.1.7 IO函数的比较 表9.8为上述函数使用时的特点,○标记的为具有此种属性。有如下规律 函数read()/write()和readv()/writev()可以对所有的文件描述符使用;recv()/send()、recvfrom()/writeto()和recvmsg/sendmsg只能操作套接字描述符。 函数readv()/writev()和recvmsg()/sendmsg()可以操作多个缓冲区,read()/write()、recv()/send()和recvfrom()/sendto()只能操作单
您可能关注的文档
- 第3章节集成运算放大器及其应用.ppt
- 第4章节 100M快速以太网组网技术.ppt
- 第4章节 CSS的单位.ppt
- 第3章节决策.ppt
- 第4章节 个性心理2.ppt
- 第4章节 Linux网络接口配置.ppt
- 第4章节 互联网协议IP.ppt
- 第3章节:标高与轴网.pdf
- 第4章节 MATLAB在信号处理中的应用.ppt
- 第3章节静定结构的内力计算.ppt
- 2025四川天府银行社会招聘备考题库(攀枝花)含答案详解(最新).docx
- 2025四川银行首席信息官社会招聘备考题库及完整答案详解1套.docx
- 2025四川天府银行社会招聘备考题库(攀枝花)带答案详解.docx
- 2025四川天府银行社会招聘备考题库(成都)含答案详解(a卷).docx
- 2025四川广元市利州区选聘社区工作者50人备考题库及答案详解(基础+提升).docx
- 2025天津银行资产负债管理部总经理或副总经理招聘1人备考题库含答案详解(典型题).docx
- 2025四川天府银行社会招聘备考题库(西充)附答案详解(考试直接用).docx
- 2025年中国民生银行南宁分行招聘2人备考题库及答案详解(全优).docx
- 2025天津银行高级研究人才招聘备考题库附答案详解(达标题).docx
- 2025大连银行营口分行招聘2人备考题库及参考答案详解一套.docx
最近下载
- 中国传媒大学-舆论学原理、方法与应用-课件-第五章 舆论调控.pptx VIP
- Aomin奥敏1131AN室内机说明书(725、726、826、urment系统).pdf VIP
- 2025年晋中职业技术学院单招职业技能考试题库参考答案.docx VIP
- 2025年小学数学二年级上册第六单元测试卷(提高培优) .pdf VIP
- 艾克制药访谈.doc VIP
- 关爱女性健康远离妇科肿瘤.pptx VIP
- 2025雨课堂-科研伦理与学术规范概论.docx
- 23468-2025坠落防护装备的选择、使用和维护.docx VIP
- 国家开放大学《管理英语3》边学边练Unit-1-8(答案)_可搜索.pdf VIP
- 【MOOC】《电磁场与电磁波》(北京交通大学) 中国大学慕课答案.docx VIP
原创力文档


文档评论(0)