C# KeepAlive的设置

C# KeepAlive的相关设置

网上有很多相关KeepAlive的内容,终于找到了有关C#的这方面资料,设置了下,有行可靠!

 TcpListener myListener = new TcpListener(IPAddress.Any, port);//绑定端口IP信息

 myListener.Start();//开始监听

 TcpClient newClient=myListener.AcceptTcpClient();//接受请求

 newClient.Client.IOControl(IOControlCode.KeepAliveValues, KeepAlive(1, 30000, 10000), null);//设置Keep-Alive参数

 private byte[] KeepAlive(int onOff, int keepAliveTime, int keepAliveInterval)
 {
     byte[] buffer = new byte[12];
     BitConverter.GetBytes(onOff).CopyTo(buffer, 0);
     BitConverter.GetBytes(keepAliveTime).CopyTo(buffer, 4);
     BitConverter.GetBytes(keepAliveInterval).CopyTo(buffer, 8);
     return buffer;
  }

KeepAlive函数参数说明:

onOff:是否开启KeepAlive

keepAliveTime:开始首次KeepAlive探测前的TCP空闭时间

keepAliveInterval: 两次KeepAlive探测间的时间间隔

Keep-Alive的位置我是放在收到客户端以后,对每个连入的客户端都设置一次。

相关文章:http://www.cnblogs.com/lidabo/p/4253356.html

时间: 2024-07-31 11:25:40

C# KeepAlive的设置的相关文章

KeepAlive详解

转:http://www.cnblogs.com/havenshen/p/3850167.html KeepAlive既熟悉又陌生,踩过坑的同学都知道痛.一线运维工程师踩坑之后对于KeepAlive的总结,你不应该错过! 最近工作中遇到一个问题,想把它记录下来,场景是这样的: 从上图可以看出,用户通过Client访问的是LVS的VIP, VIP后端挂载的RealServer是Nginx服务器. Client可以是浏览器也可以是一个客户端程序.一般情况下,这种架构不会出现问题,但是如果Client

client,server,nginx 在使用keepAlive里要保持一致,否则起不到效果

为什么要有KeepAlive? 在谈KeepAlive之前,我们先来了解下简单TCP知识(知识很简单,高手直接忽略).首先要明确的是在TCP层是没有“请求”一说的,经常听到在TCP层发送一个请求,这种说法是错误的. TCP是一种通信的方式,“请求”一词是事务上的概念,HTTP协议是一种事务协议,如果说发送一个HTTP请求,这种说法就没有问题.也经常听到面试官反馈有些面试运维的同学,基本的TCP三次握手的概念不清楚,面试官问TCP是如何建立链接,面试者上来就说,假如我是客户端我发送一个请求给服务端

KeepAlive细谈

来自: http://blog.sina.com.cn/s/blog_e59371cc0102ux5w.html 最近工作中遇到一个问题,想把它记录下来,场景是这样的: 从上图可以看出,用户通过Client访问的是LVS的VIP, VIP后端挂载的RealServer是Nginx服务器. Client可以是浏览器也可以是一个客户端程序.一般情况下,这种架构不会出现问题,但是如果Client端把请求发送给Nginx,Nginx的后端需要一段时间才能返回结果,超过1分30秒就会有问题,使用LVS作为

关于HTTP keep-alive的实验(转至 http://my.oschina.net/flashsword/blog/80037)

前面一篇文章提到,HTTP1.1中持久连接已经是默认配置,除非设置Connection为close,否则默认都会进行持久连接.但是我们知道事实标准跟教科书还是可能会有一定差距的,所以不妨自己尝试一下. 我们知道,TCP建立连接时会进行三次握手,而握手是以一方发送一个SYN为开始的.下载抓包工具Wireshark之后,进行抓包调试.在Java里实现了一段模拟请求的代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2

谈HTTP的KeepAlive

为什么要使用KeepAlive? 终极的原因就是需要加快客户端和服务端的访问请求速度.KeepAlive就是浏览器和服务端之间保持长连接,这个连接是可以复用的.当客户端发送一次请求,收到相应以后,第二次就不需要再重新建立连接(慢启动的过程),就可以直接使用这次的连接来发送请求了.在HTTP1.0及各种加强版中,是默认关闭KeepAlive的,而在HTTP1.1中是默认打开的. HTTP头是Connection: Keep-Alive 要设置保持多少时间和连接使用: Keep-alive: 300

nginx优化笔记(keepalive、https等)

一.nginx之tcp_nopush.tcp_nodelay.sendfile 1.TCP_NODELAY你怎么可以强制 socket 在它的缓冲区里发送数据?一个解决方案是 TCP 堆栈的 TCP_NODELAY选项.这样就可以使缓冲区中的数据立即发送出去. Nginx的 TCP_NODELAY 选项使得在打开一个新的 socket 时增加了TCP_NODELAY选项.但这时会造成一种情况:终端应用程序每产生一次操作就会发送一个包,而典型情况下一个包会拥有一个字节的数据以及40个字节长的包头,

keepalive专题

为什么要谈KeepAlive nginx_lvs_client 从上图可以看出,用户通过Client访问的是LVS的VIP, VIP后端挂载的RealServer是Nginx服务器. Client可以是浏览器也可以是一个客户端程序.一般情况下,这种架构不会出现问题,但是如果Client端把请求发送给Nginx,Nginx的后端需要一段时间才能返回结果,超过1分30秒就会有问题,使用LVS作为负载均衡设备看到的现象就是1分30秒之后, Client和Nginx链接被断开,没有数据返回.原因是LVS

nginx优化——包括https、keepalive等

一.nginx之tcp_nopush.tcp_nodelay.sendfile 1.TCP_NODELAY 你怎么可以强制 socket 在它的缓冲区里发送数据? 一个解决方案是 TCP 堆栈的 TCP_NODELAY选项.这样就可以使缓冲区中的数据立即发送出去. Nginx的 TCP_NODELAY 选项使得在打开一个新的 socket 时增加了TCP_NODELAY选项.但这时会造成一种情况: 终端应用程序每产生一次操作就会发送一个包,而典型情况下一个包会拥有一个字节的数据以及40个字节长的

vue路由中使用keep-alive 以及activated和deactivated 钩子

本次只是记录下开发中碰到的问题. 最近做一个活动页面,涉及到角色和权限的问题,需要跳转很多页面,于是vue-router走起,顺便keep-alive也用起来了,嗯,跳转的很爽,但是一个详情页面组件,被两个路由组件引用了,此时发现有一个路由在调用详情组件时没有按需求刷新,并且已经在keep-alive上设置了exclude,调试了半天不能解决问题,就用最笨的办法,把一个相同的页面写在两处,要求算是做完了,但是,看着这样的代码,总觉得不舒服,并且有改动的话要改两处,很容易遗漏,于是,研究了一下,之