zoukankan      html  css  js  c++  java
  • keepalive,是在TCP中一个可以检测死连接的机制。

    工作原理

    keepalive原理很简单,TCP会在空闲了一定时间后发送数据给对方:

    1.如果主机可达,对方就会响应ACK应答,就认为是存活的。

    2.如果可达,但应用程序退出,对方就发FIN应答,发送TCP撤消连接。

    3.如果可达,但应用程序崩溃,对方就发RST消息。

    4.如果对方主机不响应ack, rst,继续发送直到超时,就撤消连接。这个时间就是默认

    的二个小时。

    uses WinSock2;

    procedure TForm1.IdTCPServer1Connect(AThread: TIdPeerThread);

    type

    TCP_KeepAlive = record

    OnOff: Cardinal;

    KeepAliveTime: Cardinal;

    KeepAliveInterval: Cardinal

    end;

    var

    Val: TCP_KeepAlive;

    Ret: DWord;

    begin

    Val.OnOff:=1;

    Val.KeepAliveTime:=6000; //6s

    Val.KeepAliveInterval:=6000; //6s

    WSAIoctl(AThread.Connection.Socket.Binding.Handle, IOC_IN or IOC_VENDOR or 4,

    @Val, SizeOf(Val), nil, 0, @Ret, nil, nil)

    end;

    ------------------------------------------------------

    https://baike.baidu.com/item/keepalive/2650034?fr=aladdin

     

    文章来源:刘俊涛的博客 欢迎关注公众号、留言、评论,一起学习。

     

    若有帮助到您,欢迎点击推荐,您的支持是对我坚持最好的肯定(*^_^*)

  • 相关阅读:
    springboot 之JPA
    Oracle数据库安装
    Pytho之Django
    springboot之docker化
    opencv之dlib库人脸识别
    opencv之调用摄像头
    springboot之多模块化项目打包
    python学习笔记2--list
    ETL测试
    Mockserver -MOCO的使用
  • 原文地址:https://www.cnblogs.com/lovebing/p/14279519.html
Copyright © 2011-2022 走看看