linux精通 4.1

2.1.3 http服务器实现

  1. 目的

    reactor应用——webserver webclient

    每次上课前 看大纲+down code

  2. 复习:

    在这里插入图片描述

    不行啊 编译给的代码报错啊 给的最新的不是0430那一版就不行啊

    reactor.c:(.text+0x254): relocation truncated to fit: R_X86_64_PC32 against symbol `begin' defined in COMMON section in /tmp/cctoLdtd.o
    

    你学会了吗 小朋友 😆 git 拉取某一次的版本 我好棒成功了

    git拉取历史提交的代码_git拉取某次提交的代码-CSDN博客

    一开始clone下来git clone .git

    在这里插入图片描述

    git log查看某一日期的commit git switch -c 名字创建一个分支branch

    git checkout 提交hash值切换到某一次提交

    在这里插入图片描述

    git switch main 又可以切回main分支

  3. 编译0427版本还是报错

    https://blog.csdn.net/www_helloworld_com/article/details/88964968

    gcc -mcmodel=medium -o reactor reactor.c 
    

    在这里插入图片描述

    成功啦 send以后返回接收的数据

水平 边沿触发

  1. 水平:只要有数据 没读完前一直触发

  2. 边沿:有数据只触发一次,不管读完没

    改accept cb里 默认水平lt,或一个epollet边沿触发

    event_register(clientfd, EPOLLIN | EPOLLET);
    

    bufferlength = 10 改小buffer 明显一点

    改recv_cb

    if 1
        里面
        printf("[%d] RECV: %s\n",  conn_list[fd].rlength, conn_list[fd].rbuffer);
    
    
    把这一行注释掉,accept事件以后只有recv,没有epollout 没有再次预设事件        
    // set_event(fd, EPOLLOUT, 0);
    

    效果

    ET边沿触发 只触发一次,一段段recv,配套while

    你妈喊你吃饭,一直喊喊道答应为止

    每次client send32 byte

    每次server 收buffer 10

    1串字符32byte 要四次,所以要按四次send servervscode里才收的完!!!!

    在这里插入图片描述

    LT水平触发——触发四次,不需要while 全自动

    你妈喊你吃饭直喊一次,全自动不再喊等到你来

    client网络助手里send一次,vscode的server端一次性跳出来4行,就是边沿要四次才能收到的数

    为什么有奇奇怪怪的结尾,因为没有memset清空

    何时用LT ET

    非阻塞IO用边沿触发,因为如果阻塞io,进入while会卡住,不recv了,所以非阻塞io用边沿触发好

    在这里插入图片描述

    **水平触发:适合包大小固定的,**多个client 连listenfd 然后server调用accept

    边沿:适合每个包大小不确定的,while加accept()直到accept(返回-1 不读了

相关推荐

  1. LINUX 精通 3.2

    2024-06-17 22:22:03       25 阅读
  2. Linux从入门到精通

    2024-06-17 22:22:03       26 阅读
  3. linux从入门到精通

    2024-06-17 22:22:03       22 阅读
  4. [精通linux]-302- linux 高级命令

    2024-06-17 22:22:03       47 阅读
  5. Linux内核精通》笔记参考目录

    2024-06-17 22:22:03       19 阅读
  6. Linux从入门到精通 --- 1.初始Linux

    2024-06-17 22:22:03       40 阅读
  7. 终极Linux命令宝典:从入门到精通,一网打尽!

    2024-06-17 22:22:03       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-17 22:22:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-17 22:22:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-17 22:22:03       82 阅读
  4. Python语言-面向对象

    2024-06-17 22:22:03       91 阅读

热门阅读

  1. xss-lab的level11-level14

    2024-06-17 22:22:03       29 阅读
  2. SpinalHDL之寄存器库函数

    2024-06-17 22:22:03       31 阅读
  3. MySQL触发器

    2024-06-17 22:22:03       25 阅读
  4. 华为网络设备高频命令

    2024-06-17 22:22:03       33 阅读
  5. Rust 1.79.0发布

    2024-06-17 22:22:03       31 阅读
  6. Web前端开发的过程:深入剖析与精彩演绎

    2024-06-17 22:22:03       34 阅读
  7. R-Tree

    2024-06-17 22:22:03       24 阅读
  8. 安卓开发serizeable和parcelble的区别

    2024-06-17 22:22:03       31 阅读
  9. 深入探索Spring Boot:原理与实践

    2024-06-17 22:22:03       24 阅读
  10. CSS基础

    CSS基础

    2024-06-17 22:22:03      29 阅读
  11. Android WindowFeature小探究

    2024-06-17 22:22:03       30 阅读