在c语言中如何屏蔽一段程序,如何在用C语言关闭TCP程序中的Nagle算法
TCP为了防止在网络中过多的小分组会导致阻塞,因此提供了Nagle算法:要求一个TCP连接上最多只能有一个未被确认的未完成的小分组,在该分组的确认到达之前不能发送其他的小分组。相反,TCP收集这些少量的分组,并在确认到来时以一个分组的方式发出去。Nagle算法会导致自己写的TCP程序中,小分组不能及时的发送出去。
现在我写了个基于TCP的socket程序,希望AP往client端发送1000个16字节的报文。结果发现client端接收到的报文并不是每次大小都是82字节(82字节是因为有66字节的TCP和IP头等,外加16字节我自己的数据),会出现大小为98字节的数据(98字节是因为有66字节的TCP和IP头等,外加两个16字节的自己的数据)。如下图所示:
这时就想起了关闭TCP中的Nagle算法。于是在我的TCP发送的Socket程序中加入如下代码(记得还要导入头文件: #include ):
/* Disable the Nagle (TCP No Delay) algorithm */
//sock_cli是自己定义的socket套接字
int flag = 1;
int ret = setsockopt( sock_cli, IPPROTO_TCP, TCP_NODELAY, (char *)&flag, sizeof(flag) );
if (ret == -1) {
printf("Couldn‘t setsockopt(TCP_NODELAY)\n");
exit(-1);
}
重新编译并且运行,抓包后如下图所示:
可以发现不会在出现小分组等待的现象,说明关闭了Nagle算法。
在c语言中如何屏蔽一段程序,如何在用C语言关闭TCP程序中的Nagle算法相关推荐
- win7或win2008系统中,出现【已停止工作,联机检查解决方案并关闭该程序,关闭程序】解决方法!
win7或win2008系统中,出现[已停止工作,联机检查解决方案并关闭该程序,关闭程序]解决方法! 经过摸索,点击[控制面板]-[操作中心]-[更改操作中心设置]-[问题报告设置]-[从不检查解决方 ...
- android屏蔽系统按键精灵,安卓按键精灵的,关闭app程序问题!
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Dim txf txf = Chr("10") //跳行符 Call 判断正在运行的程序() Sub 判断正在运行的程序() Dim ...
- html中如何屏蔽一段代码,html中如何使用python屏蔽一些基本功能(示例代码)
进行数据解析的理由不计其数,相关的工具和技巧也同样如此.但是,当您需要用这些数据做一些新的事情时,即使有"合适的"工具可能也是不够的.这一担心对于异类数据源的集成同样存在.用来做这 ...
- java中怎么判断一段代码时线程安全还是非线程安全_Java 中的多线程你只要看这一篇就够了...
引 如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个 ...
- vscode中怎样格式化js代码_如何在Visual Studio代码(VSCode)中格式化代码
回答(30) 2 years ago 对于那些想要自定义要格式化的JavaScript文件的人,可以使用 JSfiles 属性上的任何扩展名同样适用于HTML . { "beautify.o ...
- 计算机网络sequence number,TCP协议中SequenceNumber和Ack Numbe
Sequence Number lzyws7393074532892018-04-25 Number Sequence qq_391789932452017-09-21 理解TCP序列号(Sequen ...
- TCP连接中启用和禁用TCP_NODELAY有什么影响?
TCP/IP协议中针对TCP默认开启了Nagle算法.Nagle算法通过减少需要传输的数据包,来优化网络.在内核实现中,数据包的发送和接受会先做缓存,分别对应于写缓存和读缓存. 启动TCP_NODEL ...
- win7oracle启动服务,如何快速启动/关闭Win7系统中的oracle服务
如何快速启动/关闭Win7系统中的oracle服务 在我们使用开发系统的时候,我们就需要使用到oracle数据库,在我们使用的Win7系统重装中都会有一个oracle服务,通常这个服务都是关闭的.如 ...
- R语言ggplot2可视化堆叠的条形图(stacked bar plot)并在每一个条形图的的中间添加对应的数值、值标签定位在geom_col堆叠的条形图中的每个条形段的中间
R语言ggplot2可视化堆叠的条形图(stacked bar plot)并在每一个条形图的的中间添加对应的数值.值标签定位在geom_col堆叠的条形图中的每个条形段的中间 目录
最新文章
- 新一代数据中心:多层级混合设计与标准化评估
- 【正则表达式1】C++11正则表达式
- Matlab某医院用光电比色计,数理统计答案(研究生).ppt
- 重新想象 Windows 8 Store Apps (27) - 选取器: 联系人选取窗口, 自定义联系人选取窗口...
- 【c++】映射表std::map
- 深入Atlas系列:综合示例(1) - 调用服务器端方法时直接获得客户端具体类型...
- PN序列自相关特性分析
- Word多级标题出现黑块的解决思路
- 美林投资时钟与大类资产配置
- 关于医学影像中的轴位面(横断面)、冠状面、矢状面的解释
- 如何配置Web服务器?web服务器配置方法步骤
- 颜色代码:网页颜色代码大全及色彩搭配教程
- SS14 SS34如何区分正负极
- 还在纠结程序员能不能干一辈子吗?有答案了!!
- CSharp + OpenCvSharp实现医学图像拼接
- 服务器硬件与 Linux 初体验
- oracle中子查询的执行顺序是,Oracle sql语句执行顺序
- 【shell】电信免费200M一键提速脚本 转载
- 如何解决Intel SCS Can not create AD AMT Object error
- nodejs+vue宠物用品商城网站python php java
热门文章
- 【.NET Core项目实战-统一认证平台】第一章 功能及架构分析
- 选择IT事业,意味着终身学习
- .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类
- django12:form 组件/渲染标签/数据校验/钩子函数/
- 【QGIS入门实战精品教程】2.2:QGIS软件的下载与安装(Windows)
- 【QGIS入门实战精品教程】4.4:QGIS如何将点自动连成线、线生成多边形?
- 【Envi风暴】Envi5.4经典安装图文教程
- React Native之导出
- linux c之fdopen(int fd, const char *type)使用总结
- Tree前序反序列化