一,SocketSocket的选项1) TCP_NODELAY:默认值为false。表示采用Negale算法。当设置为true时,表示关闭Socket缓冲,立即发送数据。Socket默认发送数据是采用Negale算法。Negale算法是指发送方发送的数据不会立即发出,而是先放在缓冲区内,等缓冲区满了...
分类:
编程语言 时间:
2015-11-29 22:42:36
阅读次数:
142
在使用Netty时,初始化服务端或客户端时,我们经常会看到如下代码Bootstrap b = new Bootstrap();
......
b.channel(NioSocketChannel.class).option(ChannelOption.TCP_NODELAY, true);通过option方法设置一些选项(参数),它其实是一个Map,维护这键值对,option方法在Abstract...
分类:
Web程序 时间:
2015-11-26 11:01:10
阅读次数:
221
Redis接受上配置监听TCP端口和Unix套接字客户端的连接,如果启用。当一个新的客户端连接被接受,如有以下操作进行:客户端套接字置于非阻塞状态,因为Redis的使用复用和非阻塞I/O操作。TCP_NODELAY选项设定是为了以确保我们没有连接延迟。创建一个可读的文件时,这样Redis能够尽快收集...
分类:
其他好文 时间:
2015-11-05 15:06:59
阅读次数:
217
【TCP_NODELAY】 TCP_NODELAY和TCP_CORK基本上控制了包的“Nagle化”,这里我们主要讲TCP_NODELAY.Nagle化在这里的含义是采用Nagle算法把较小的包组装为更大的帧。JohnNagle是Nagle算法的发明人,后者就是用他的名字来命名的,他在1984年.....
分类:
其他好文 时间:
2015-10-11 06:45:35
阅读次数:
121
说说tcp_nodelay的原理: TCP_NODELAY和TCP_CORK基本上控制了包的“Nagle化”,这里我们主要讲TCP_NODELAY.Nagle化在这里的含义是采用Nagle算法把较小的包组装为更大的帧。JohnNagle是Nagle算法的发明人,后者就是用他的名字来命名的,他在198...
分类:
其他好文 时间:
2015-07-23 23:08:55
阅读次数:
192
一句话总结:tcp_nodelay:禁止nagle算法,有需要发送的就立即发送,比较常见tcp_cork:它是一种加强的nagle算法,过程和nagle算法类似,都是累计数据然后发送。但它没有 nagle中1的限制,所以,在设置cork后,即使所有ack都已经收到,但我还是不想发送数据,我还想继续等...
分类:
其他好文 时间:
2015-07-23 15:31:38
阅读次数:
97
启用TCP_NODELAY的情况下:客户端程序C连接到服务器程序S;C仅接受数据,S仅发送数据S循环调用send发送长度很小的数据包比如:10字节;在C上用任务管理器查看到C的上行流量大约是下行流量的1/3左右问题:C没有发送任何数据为啥有那么多的上行流量?分析:关闭TCP_NODELAY,每次调用...
分类:
其他好文 时间:
2015-07-11 16:39:40
阅读次数:
134
java socket中有很多参数可以选择,这篇博客的目的是沉淀出这些参数的语义和用法,供自己以后查阅。1、java socket参数选项总览 在JDK1.6中有如下参数选项: 1 public final static int TCP_NODELAY = 0x0001; 2 3 public .....
分类:
编程语言 时间:
2015-03-08 22:49:46
阅读次数:
300
java socket中有很多参数可以选择,这篇博客的目的是沉淀出这些参数的语义和用法,供自己以后查阅。1、java socket参数选项总览 在JDK1.6中有如下参数选项: 1 public final static int TCP_NODELAY = 0x0001; 2 3 publ...
分类:
编程语言 时间:
2015-03-08 17:02:48
阅读次数:
224
当我们通过 TCP socket 分多次发送较少的数据时,比如小于 1460 或者 100 以内,对端可能会很长时间收不到数据,导致本端应用程序认为超时报错。这时可能是受到了 TCP NAGLE 算法的影响。 关于 TCP NAGLE 算法,可以参考这篇文章《TCP NAGLE算法和实现》以及《网....
分类:
编程语言 时间:
2014-11-23 07:02:49
阅读次数:
240