zoukankan      html  css  js  c++  java
  • golang server端的epoll

    最近工作中是有网络方面的需求,在这里写一些golang网络server端的一些内容。还是有诸多的点没有想明白;

    1)一个server端的例子;

    2)epoll,每当有数据的时候就会有这么一个事件么,都是有事件的,这里就是fd的驱动,这里就是fd的驱动,为什么fd忽悠

    fd上如果是注册了poll函数,一个关键点,socket都是有等待队列的,然后自己就是等待队列的客户之一

    什么叫做socket上有数据来了。当然

    现在还是有两个地方不是非常清楚;

    1)对于接受到的数据,在socket层面是个什么摆放的格式,数据结构是什么?

    2)对于epoll机制的消息通知,是说有数据来了就通知,如果不同的fd有不同的数据获取的方式;比如,如果是监听的fd的话,那么他就应该是用accpt去获取数据,如果是普通的链接,那么就通过recvfrom去获取数据。

    3)通知有数据是怎么通知的?来了一个字节也也去通知的吗?拿肯定是读完了之后,肯定是socket记录了,用户态读了多少的数据出来,这个时候如果用户没有全部都读全,那么还是会触发一个事件过来吗?肯定不会啊,因为用户知道了上面有数据之后,肯定是一个while循环去读了,直到把所有的数据全部都耗尽为止。如果从驱动侧新来了数据,那么数据仍然是OK的,这完全是一个异步的过程,可能用户前一次已经把数据都消费完了,也都说不定。

  • 相关阅读:
    几款网络测试工具总结
    Linux安装telnet
    Linux下iptables 禁止端口和开放端口
    mysql创建某个数据库中的某张表 只读用户
    查看nginx版本号的几种方法
    Ngxtop-Nginx日志实时分析利器
    Nginx监控运维
    oracle经典书籍推荐
    华为典型局域网组网案例介绍(1)
    技术说明 路由器是如何工作的呢? 一个简单的解释
  • 原文地址:https://www.cnblogs.com/honpey/p/14613268.html
Copyright © 2011-2022 走看看