• diot函数解析



    前言

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

    一、Rio_readinitb

    读和解析请求行

    Rio_readinitb(&rio, fd); 
    
    • 1

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

    二、Rio_readlineb

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

     Rio_readlineb(&rio, buf, MAXLINE);
    
    • 1

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

    三、strstr

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

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

    四、strcat

    将两个char类型连接。

    strcat(filename, url);
    
    • 1

    五、Open_clientfd

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

    Open_clientfd(hostname, port);
    
    • 1

    六、Rio_writen

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

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

    总结

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

  • 相关阅读:
    亚马逊自养号进行买家测评需要注意什么?
    android 点9记录
    用flex实现grid布局
    数据结构:二叉树(2)
    idea提升编码效率的12种插件
    HTTS 为什么更安全?
    深度学习自学笔记六:深层神经网络
    shell原理
    构造HTTP
    【深度学习】
  • 原文地址:https://blog.csdn.net/qq_43264167/article/details/133145512