函数解析"/>
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函数解析
发布评论