TcpSocket发送延时,Nagle算法_socket通讯中的nagle算法-程序员宅基地

技术标签: Tcp  Qt  Linux  Nagle  TcpSocket  Socket  

1. Nagle算法:

是为了减少广域网的小分组数目,从而减小网络拥塞的出现;
该算法要求一个tcp连接上最多只能有一个未被确认的未完成的小分组,在该分组ack到达之前不能发送其他的小分组,tcp需要收集这些少量的分组,并在ack到来时以一个分组的方式发送出去;其中小分组的定义是小于MSS的任何分组;
该算法的优越之处在于它是自适应的,确认到达的越快,数据也就发哦送的越快;而在希望减少微小分组数目的低速广域网上,则会发送更少的分组.


2. 禁止Nagle和开启Nagle算法发送数据与确认示意图:



开启Nagle算法会导致TCP发送数据必须满足2个条件中的任意一个才会将数据发送出去:
1、达到TCP最大包长度(1500字节)
2、达到时间(测试下来是200ms)

这样在实时控制系统中,实时性不能得到满足,因此必须关闭Nagle算法。

关闭Nagle算法
Qt
TcpSocket tcpSocket;
tcpSocket.setSocketOption(QAbstractSocket::LowDelayOption, 1);


Linux
#include <netinet/tcp.h>
int on = 1; 
setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (void *)&on, sizeof(int));  
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/gch293/article/details/53894123

智能推荐

请你回答一下malloc的原理,另外brk系统调用和mmap系统调用的作用分别是什么?_malloc 和brk-程序员宅基地

文章浏览阅读1.7k次,点赞2次,收藏3次。Malloc函数用于动态分配内存。为了减少内存碎片和系统调用的开销,malloc其采用内存池的方式,先申请大块内存作为堆区,然后将堆区分为多个内存块,以块作为内存管理的基本单位。当用户申请内存时,直接从堆区分配一块合适的空闲块。Malloc采用隐式链表结构将堆区分成连续的、大小不一的块,包含已分配块和未分配块;同时malloc采用显示链表结构来管理所有的空闲块,即使用一个双向链表将空闲块连..._malloc 和brk

Python3自学--2环境搭建_/root/training/python-3.6.5/lib/python3.6/site-pac-程序员宅基地

文章浏览阅读168次。笔者开发环境:[root@BigData11 /]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.4 (Maipo)安装Python3:以Python3.6.1 为例:1.访问https://www.python.org/downloads/source/,选择源码压缩包2.上传到..._/root/training/python-3.6.5/lib/python3.6/site-packages/pandas/compat/__init

JavaScript-超大文件上传-如何上传文件-大文件上传_js如何上传大文件-程序员宅基地

文章浏览阅读191次。一、概述所谓断点续传,其实只是指下载,也就是要从文件已经下载的地方开始继续下载。在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了。一般断点下载时才用到Range和Content-Range实体头。HTTP协议本身不支持断点上传,需要自己实现。二、Range用于请求头中,指定第一个字节的位置和最后一个字节的位置,一般格式: Rang..._js如何上传大文件

YARN的发展背景及基本原理_yarn框架历史-程序员宅基地

文章浏览阅读2.1k次。Yarn产生的历史背景Hadoop是apache基金会的一个项目, 目的是开发一个开源软件,用于可靠的可扩展的,分布式的计算。 Hadoop不是一个软件,而是一个软件库,hadoop作为一个软件库,提供了一个框架,可以以分布式的方式,在集群的多台主机之间,使用简单的编程模型来处理大量的数据集。Hadoop被设计成可以从单主机扩展到数千台主机,并且支持本地计算和存储。 Hadoop本身被设计成可以_yarn框架历史

kubernetes杂谈之(二)静态Pod_静态pod和动态pod的主要区别-程序员宅基地

文章浏览阅读1.2k次。一 静态Pod --- '静体现在哪?' ---之前:前面Pod的'生命周期管理'都是通过像DaemonSet、StatefulSet、Deployment'上层'这种方式创建管理的静态Pod是由kubelet进行管理'仅存在于特定Node上'的Pod -->'可以理解为定向调度' -->'如何定向调度涉及到创建方式'它们'不能通过API Server'进行管理,无法与'ReplicationController.._静态pod和动态pod的主要区别

eclipse里面配置spring,提示java.lang.ClassNotFoundException: org.springframework.web.servlet.Dispatcher_eclipse java.lang.classnotfoundexception: org.spri-程序员宅基地

文章浏览阅读7.5k次。在eclipse里面创建了一个Dynamic 项目,用到Spring,一直提示java.lang.ClassNotFoundException: org.springframework.web.servlet.Dispatcher 错误,后来又提示java.lang.NoClassDefFoundError: org/springframework/context/ApplicationConte_eclipse java.lang.classnotfoundexception: org.springframework.web.servlet.di

随便推点

IOC、AOP、以及Spring框架的面试整合题_springioc和aop的面试题-程序员宅基地

文章浏览阅读616次,点赞3次,收藏3次。spring是一个开放源代码的设计层面框架,它解决的是业务逻辑层和其他各层的松耦合问题,是一个分层的javaEE一站式轻量级开源框架。_springioc和aop的面试题

蚂蚁开发者工具(支付宝小程序开发工具)v0.32.3官方版_支付宝小程序开发者工具linux版本-程序员宅基地

文章浏览阅读3k次。蚂蚁开发者工具也就是支付宝小程序开发工具,支付宝小程序已经进入公测阶段,目前公测主要面向的是企业级开发者,蚂蚁开发者工具是支付宝小程序必备的工具!小程序介绍:支付宝小程序是手机应用嵌入支付宝客户端的一种方法,有以下特点:基于 Web 技术,学习成本低一套代码,同时支持 iOS 和 Android,接近原生体验提供丰富的组件和 API(比如获取用户信息、本地存储、支付功能等)基..._支付宝小程序开发者工具linux版本

csp 详解碰撞的小球(C++实现)_小球与客户边区边界碰撞动画怎样用c++执行-程序员宅基地

文章浏览阅读1.4k次。题目什么的就不写了,觉得大家都看过,直接上思路!解题思路碰撞的小球一题和下面链接里的题目类似:POJ的题目Ants可惜还是有点区别,如果使用和上题一样的思路,会带来不必要的麻烦!(我使用上题的思路没有做出来,大家可以试试)POJ的题目Ants这道题的解题思路还是挺新颖的,建议大家看看! 在我抛弃上述思路的做法后,很快就写出了答案:一、首先定义了一个结构体:typedef struct Ball ball;struct Ball{ int position;//表示小球位置 _小球与客户边区边界碰撞动画怎样用c++执行

位运算解决“一个数组中,只有一个数字出现n次,其他数字出现k次”问题_一个整形数组中,除了一个数字外,其他数字都出现了n次,找出这个不重复的数字-程序员宅基地

文章浏览阅读1.7k次。在学习完位操作后,经常会遇到一类关于查找缺失整数的问题。_一个整形数组中,除了一个数字外,其他数字都出现了n次,找出这个不重复的数字

MobaXterm连接远程服务器_mobaxterm迁移连接与密码-程序员宅基地

文章浏览阅读2.6k次。下载一个MobaXterm,选择左上角Session,弹出界面中选择SSH,输入ip和port,登陆后输入用户名和密码,完成连接前提是服务器开启了ssh:sudo apt-get updatesudo apt-get install openssh-serversudp ps -e | grep ssh ..._mobaxterm迁移连接与密码

Ext.form.field.File示例-程序员宅基地

文章浏览阅读7.1k次。Ext.onReady(function(){ Ext.QuickTips.init(); var uploadForm = Ext.create('Ext.form.Panel', { title: 'Ext.form.field.File示例', bodyStyle: 'padding:5 5 5 5',//表单边距 width: 300, fram_ext.form.field.file

推荐文章

热门文章

相关标签