当前位置: 首页 > news >正文

diot函数解析

文章目录

  • 前言
  • 一、Rio_readinitb
  • 二、Rio_readlineb
  • 三、strstr
  • 四、strcat
  • 五、Open_clientfd
  • 六、Rio_writen
  • 总结


前言

备战CSAPP中的ProxyLab时解析书上的diot函数中遇到了一些不会的函数,遂解析记录。

一、Rio_readinitb

读和解析请求行

Rio_readinitb(&rio, fd); 

初始化一个缓冲区,并把一个文件描述符与缓冲区联系起来

二、Rio_readlineb

从文件rio读出下一个文本行,将它复制到内存位置buf,最多读MAXLINE-1

 Rio_readlineb(&rio, buf, MAXLINE);

包装函数:从内部读缓冲区复制一个文本行,当缓冲区变空时,会自动调用read重新填满缓冲区

三、strstr

判断字符串str2是否是str1的子串。如果是,则该函数返回 str1字符串从 str2第一次出现的位置开始到 str1结尾的字符串;否则,返回NULL。

if (!strstr(uri, "cgi-bin"))

四、strcat

将两个char类型连接。

strcat(filename, url);

五、Open_clientfd

客户端调用open_clientfd建立与服务器的连接,该服务器运行着在主机hostname上,并在端口号port上监听连接请求。返回一个打开的套接字描述符。输入的参数有两个,分别为服务端的hostname(地址)和port(端口)。而输出的参数则是成功连接到服务端的那个客户端所对应的descriptor值。

Open_clientfd(hostname, port);

六、Rio_writen

从位置usrbuf传送n个字节到描述符fd,与rio_readen一起实现内存到文件直接传送数据。

rio_writen(int fd, void *usrbuf, size_t n);

总结

这就是我大概的理解,只是CSAPP中doit函数用到的辅助函数。

http://www.lryc.cn/news/174093.html

相关文章:

  • Python函数绘图与高等代数互融实例(一):正弦函数与余弦函数
  • Python 判断回文数
  • 人工智能在金融领域的五个应用案例
  • java 工程管理系统源码+项目说明+功能描述+前后端分离 + 二次开发
  • Effective C++看书笔记(2):构造/析构/赋值运算
  • 交换奇偶位:交换一个整数的二进制的奇偶位置(仅考虑正数情况)
  • Unity中的两种ScriptingBackend
  • vue3硅谷甄选01 | 使用vite创建vue3项目及项目的配置 环境准备 ESLint配置 prettier配置 husky配置 项目集成
  • 蓝牙核心规范(V5.4)10.5-BLE 入门笔记之HCI
  • 【计算机毕业设计】基于SpringBoot+Vue记帐理财系统的设计与实现
  • 2023年中国研究生数学建模竞赛E题
  • 基于springboot+vue的大学生科创项目在线管理系统
  • 什么是文档签名证书?PDF文档怎么签名?
  • 2023年汉字小达人区级比赛倒计时2天,最新问题解答和真题练一练
  • 关于地址存放的例题
  • Flume最简单使用
  • 第2章 Java集合
  • YOLOv5、YOLOv8改进:C3STR(Swin Transformer)
  • AIGC百模大战
  • docker jira 一键安装含PJ(docker 一键安装jira)
  • 认识一下Git
  • 只需4步使用Redis缓存优化Node.js应用
  • 【react基础01】项目文件结构描述
  • 光电开关-NPN-PNP
  • 学会使用Git 和 GitHub
  • SoftwareTest3 - 要了人命的Bug
  • Linux系统中MySQL库的操作,实操sql代码
  • Python基础分享之面向对象的进一步拓展
  • Windows安装Docker Desktop并配置镜像、修改内存占用大小
  • Zipping