
TCP/IP
yhc1991
这个作者很懒,什么都没留下…
展开
-
网络编程中的TCP保活
在默认的情况下,TCP连接是没有保活的心跳的。这就是说,当一个TCP的socket,客户端与服务端谁也不发送数据,会一直保持着连接。这其中如果有一方异常掉线,另一端永远也不可能知道。这对于一些服务型的程序来说,将是灾难性的后果。 所以,必须对创建的socket,启用保活心跳,即Keepalive选项。启用Keepalive 对于WIN32或者Linux平台来说,设置so转载 2015-06-11 09:43:48 · 1160 阅读 · 0 评论 -
TCP协议的KeepAlive机制与HeartBeat心跳包
心跳包很多应用层协议都有HeartBeat机制,通常是客户端每隔一小段时间向服务器发送一个数据包,通知服务器自己仍然在线,并传输一些可能必要的数据。使用心跳包的典型协议是IM,比如QQ/MSN/飞信等协议。心跳包之所以叫心跳包是因为:它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个客户端还活着。事实上这是为了保持长连接,至于这个包的内容,是没有什么特别规定的,不过一般都是很小转载 2015-06-10 18:07:14 · 847 阅读 · 0 评论 -
TCP之选项TCP_KETEPALIVE
TCP之选项TCP_KETEPALIVE KEEPALIVE机制,是TCP协议规定的TCP层(非应用层业务代码实现的)检测TCP本端到对方主机的TCP连接的连通性的行为。避免服务器在客户端出现各种不良状况时无法感知,而永远等在这条TCP连接上。 该选项可以设置这个检测行为的细节,如下代码所示:int keepAlive = 1; // 非0值,开启转载 2015-06-15 10:38:31 · 496 阅读 · 0 评论 -
TCP连接探测中的Keepalive和心跳包
1. TCP保活的必要性1) 很多防火墙等对于空闲socket自动关闭2) 对于非正常断开, 服务器并不能检测到. 为了回收资源, 必须提供一种检测机制. 2. 导致TCP断连的因素如果网络正常, socket也通过close操作来进行优雅的关闭, 那么一切完美. 可是有很多情况, 比如网线故障, 客户端一侧突然断电或者崩溃等等, 这些情况server并不能转载 2015-06-15 10:55:47 · 548 阅读 · 0 评论 -
C语言判断给定的字符串是否为合法的ip地址
#include #include // www.outofmemory.cnint main(void) { char str[31],temp[31]; int a,b,c,d; while(gets(str)!=NULL) { if(sscanf(str, "%d.%d.%d.%d ",&a,&b,&c,转载 2015-09-06 17:06:31 · 5137 阅读 · 0 评论