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的,这完全是一个异步的过程,可能用户前一次已经把数据都消费完了,也都说不定。

  • 相关阅读:
    struts2校验器规范错误解决
    java extend 和 implements 的区别
    Java 中 synchronized的用法详解
    事件处理程序
    Web字体(链接)嵌入
    常见浏览器bug(针对IE6及更低版本)及其修复方法
    canvas实现的时钟效果
    SSM(springMVCspringmybatis)环境搭建01建立Mavenweb项目
    Android中关于软键盘的一些设置
    Android调用系统相机和相册
  • 原文地址:https://www.cnblogs.com/honpey/p/14613268.html
Copyright © 2011-2022 走看看