nginx-0.1.0文件分析2: ngx_socket.c
2019独角兽企业重金招聘Python工程师标准>>>
函数预览:
1)ngx_nonblocking
2)ngx_blocking
3)ngx_tcp_nopush
4)ngx_tcp_push
解析:
1)ngx_nonblocking
从字面意义来理解,就是非阻塞。
int ngx_nonblocking(ngx_socket_t s)
{
u_long nb;
nb = 1;
return ioctl(s, FIONBIO, &nb);
}
实际上是执行ioctl(s,FIONBIO,&(value:1));
FIONBIO 设置/ 清除非阻塞I/O 标志
这里通过1就是设置非阻塞标志位。
2)ngx_blocking
int ngx_blocking(ngx_socket_t s)
{
u_long nb;
nb = 0;
return ioctl(s, FIONBIO, &nb);
}
这个就不需要解释了。
3)ngx_tcp_nopush
int ngx_tcp_nopush(ngx_socket_t s)
{int cork;cork = 1;return setsockopt(s, IPPROTO_TCP, TCP_CORK,(const void *) &cork, sizeof(int));
}
解释下TCP_CORK的意思:
如果将TCP连接比喻为一个管道,那TCP_CORK选项的作用就像一个塞子。
设置TCP_CORK选项,就是用塞子塞住管道,而取消TCP_CORK选项,就是将塞子拔掉。
当TCP_CORK选项被设置时,TCP链接不会发送任何的小包,即只有当数据量达到MSS时,才会被发送。
一般当数据传输完成时,通常需要取消该选项,以防被塞住,这样才可以让不够MSS大小的包能及时发出去。
4) ngx_tcp_nopush
不需要解释了。
转载于:https://my.oschina.net/qiangzigege/blog/194026
nginx-0.1.0文件分析2: ngx_socket.c相关推荐
- PE文件和COFF文件格式分析--MS-DOS 2.0兼容Exe文件段
MS 2.0节是PE文件格式中第一个"节".其大致结构如下:(转载请指明来源于breaksoftware的csdn博客) 在VC\PlatformSDK\Include\WinNT ...
- android文件上传413 nginx [error] 9679#0: *318855 client intended to send too large body: 1593409 bytes
问题描述: android 图片文件上传服务器返回 413 ios 上传正常 排查: # whereis nginx # vi /etc/nginx/nginx.conf 查看日志存放地址 # cat ...
- 熊海CMS_V1.0代码审计与漏洞分析及采坑日记(一)--文件包含漏洞
前言 最近几天在给协会的学弟讲代码审计入门相关内容,便找了这个熊海CMS_V1.0来教学,结果在这个过程中遇到蛮多问题的,于是这篇文章详细记录了对熊海CMS_V1.0从搭建到审计与漏洞分析的过程,其中 ...
- 火绒安全v5.0.45 附单文件版
文章目录[隐藏] 软件介绍 软件截图 软件介绍 火绒是一款轻巧.高效.超强防御的安全防护软件.功能强悍,体量轻巧,既干净又安静.它能全面防御病毒.木马.流氓软件.流氓网站等对电脑系统和用户信息的威胁行 ...
- linux安装nginx1.14.0,Ubuntu 14.04 安装最新稳定版Nginx 1.6.0
Ubuntu14.04默认安装的是Nginx 1.4.6 如果已经安装,请先卸载 sudo apt-get remove nginx 最新的稳定版Nginx 1.6.0在ubuntuupdates p ...
- NVIDIA DeepStream 5.0构建智能视频分析应用程序
NVIDIA DeepStream 5.0构建智能视频分析应用程序 无论是要平衡产品分配和优化流量的仓库,工厂流水线检查还是医院管理,要确保员工和护理人员在照顾病人的同时使用个人保护设备(PPE),就 ...
- oracle log block size,案例:Oracle无法启动报错ORA-00218: block size 0 重建控制文件
天萃荷净 oracle数据库无法启动报错ORA-00218故障,通过重建控制文件解决文件损坏问题 遇到一个案例在数据库启动的时候报ORA-00218错误,而这个故障的引起原因是因为重建控制文件的时候, ...
- Android 6.0.1 Location Service 分析
定位服务是手机上最常用的功能之一,据说也是相对比较简单的服务,所以从这里入手.其他系统服务的架构都是类似的.明白其中一个之后,再去理解其他的会容易得多.下面以 Android 源码为基础,大致分析了 ...
- 【Vue】Docker + Nginx 部署 Vue3.0 项目
Docker + Nginx 部署 Vue3.0 项目 1.用指令 npm run build 打包vue.js项目(该项目是在WebStorm里面新建的Vue空项目). 打包成功后,会生成一个目录d ...
- nginx 1.14.0 配置部署 thinkphp 5.1
开始接触NGINX,配置tp5配了半天,找不到具体原因,于是用网上搜索到的配置复制粘贴搞定. 感谢 https://blog.csdn.net/qq_36431213/article/details/ ...
最新文章
- 我的2008年(上)-《走出软件作坊》是怎样炼成的
- Thinkpad T420 指纹开机 win10 解决方案
- List-----Array
- python的replace第i个位置_《原神》第80个绯红玉髓位置一览 第80个绯红玉髓如何获取...
- pytorch 笔记:torch.distributions 概率分布相关(更新中)
- 【赠书】深入浅出Python量化交易实战
- Javascript - Jquery - 事件
- centos重新安装yum
- LeetCode 653. 两数之和 IV - 输入 BST(二叉搜索树迭代器双指针)
- 查询各个科目成绩前三的记录
- Hadoop之mapReduce有几种排序及排序发生的阶段
- Hadoop-MapReduce
- android架构图示
- Unity3d import package 无标准资源包
- MATLAB:图像半调转换(halftone)和抖动转换(dither)
- AHRS简要说明及使用例程(外加踩坑)
- 好佳居窗帘十大品牌 窗帘需要装窗幔吗
- 李刚疯狂JAVA面向对象章节
- RPG游戏经典的系统架构
- Flutter中那些你需要知道的文本知识!
热门文章
- 借助Haproxy_exporter实现对MarathonLb的流量和负载实例业务的可用状态监控-续
- Axure实操笔记之axure炫酷的作者信息设置
- 计算机网络超详细笔记(一):计网概述
- PathProber:基于暴力破解方法探测和发现HTTP路径名
- classpath java配置_Java环境变量中classpath是必须配置吗?
- Android TeaPickerView数据级联选择器
- 1537 学生干部虚基类
- 外网接口(浏览器接口)调取设备数据,放到数据库里
- javascript 原型链实现继承简单例子
- Unsatisfied forward or external declaration 错误分析