• 小蚂蚁
    2019-11-30
    为什么在发送数据时,会先尝试通过 socket 直接发送,再由框架接管呢?
    老师你好,这个问题中,发送缓冲区有数据说明发送效率低(数据多,网络差等原因导致),没有注册WRITE事件是什么意思呢?(感觉这时一个基础问题[小尴尬])

    作者回复: 有两种发送数据的方式,第一种是通过注册WRITE事件,等待reactor来驱动我们把数据发送出去;第二种是不需要reactor驱动,直接往套接字上发送。这里的解释是说,在大部分情况下,为了效率,直接往套接字上发送,当一次解决不了时,再通过reactor来驱动数据发送。

    
     1
  • 龙骑士
    2019-12-01
    看了代码,好像connection对象没有释放,不知道是不是看漏了

    作者回复: 我仔细看了下,确实在handle_connection_closed方法中需要增加释放connection对象,感谢指正,方便的话,不知道是否可以提一个PR修复一下。

    
    
  • yusuf
    2019-11-26
    // add event read for the new connection
    struct channel *channel1 = channel_new(connected_fd, EVENT_READ, handle_read, handle_write, tcpConnection);

    请问这里第4个参数设置了handle_write函数,为什么第2个参数没有设置EVENT_WRITE呢?
    原本以为这个地方是漏掉了EVENT_WRITE,可添加上EVENT_WRITE后,发现tcp服务器收到数据后会一直打印,而http服务器响应一次请求后会崩溃。这又是为什么呢?
    展开

    作者回复: 这里是向reactor注册了数据可读的事件,注意这个时候缓冲区是没有写入的需求的,如果注册了可写事件,相当于这个事件是肯定会发生的(因为套接字写缓冲区都是空的,可以往里写),所以这个时候你会看到一直会打印。

    也就是说,只有在真正有数据需要发送的时候,才需要注册EVENT_WRITE,让reator驱动把需要发送的数据发送完。

    
    
  • Ray_h
    2019-11-11
    非常感谢老师的付出!前面基础篇和提升篇的课程可以很快消化。实践篇里面的内容我则需要花比较多的时间去梳理对象之间的关系,然后才能弄清楚运行时各个对象之间的联系。正如前面有同学说老师虽然是用C语言写的代码,但是处处是面向对象的思想。
    我认为tcp-server与http-server是基类和子类关系;channel和acceptor也是基类与子类的关系。当然里面还存在大量的包含关系。tcp-connection类继承自channel,但是tcp-connection与eventloop的关系我就不是很确定。还想请老师或者其他同学能够指点迷津,最终很想将老师的c代码改写成c++风格,希望能跟各位同学相互讨论。email: leihao22@126.com

    作者回复: 非常支持c++改造,可以贴出代码地址大家一起review。

    
    
  • CCC
    2019-10-28
    真的非常谢谢老师,这个专栏我大多数文章都看了两遍以上,很多操作系统的细节关联的都搜了不少,很多以前只是了解的东西做到了真的理解了,再次谢谢老师!

    作者回复: 这是对我最大的奖励,感谢反馈

    
    
  • tt
    2019-10-28
    自己是做后端开发的,平常的开发工作也时常需要深入到TCP的底层去排除问题。学习完这个课程,真的是大大丰富了自己的网络知识细节。

    尤其是最后的实战部分。最近在研究PYTHON和JAVASCRIPT中的异步编程模型和事件循环,但对它们的底层实现细节不清楚,看了老师的实战代码,里面也有事件循环,也有CHANNEL等,觉得收获甚大,对这里提到的两种语言底层有了一个模糊的感性认识,为以后研读源码提供了一个入口。

    为此,自己也花了好长时间画了各个对象之间的关系图和应用启动后各对象之间的交互流程图。

    感谢老师!
    展开

    作者回复: 感谢支持,有收获是对我工作最大的肯定

     1
    
  • 传说中的成大大
    2019-10-28
    这是老师给我吗收拾的细软,让我们下山了吗?o(╥﹏╥)o

    作者回复: 江湖还在,继续交流哦

    
    
  • MoonGod
    2019-10-28
    谢谢老师的解答,整个系列受益匪浅。

    作者回复: 非常欣慰,感谢支持

    
    
我们在线,来聊聊吧