diot函数解析

编程入门 行业动态 更新时间:2024-10-12 05:53:45

diot<a href=https://www.elefans.com/category/jswz/34/1771370.html style=函数解析"/>

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函数用到的辅助函数。

更多推荐

diot函数解析

本文发布于:2024-03-07 22:58:46,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1719136.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:函数   diot

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!