TServerContainer = class(TDataModule)
TCP_KeepAlive = record OnOff: Cardinal; KeepAliveTime: Cardinal; KeepAliveInterval: Cardinal; end;procedure TServerContainer.DSServerConnect( DSConnectEventObject: TDSConnectEventObject);var Val: TCP_KeepAlive; Ret: DWord; ClientConnection: TIdTCPConnection;begin //心跳包设置 ClientConnection := TIdTCPConnection(DSConnectEventObject.ChannelInfo.Id); Val.OnOff := 1; Val.KeepAliveTime := 6000; Val.KeepAliveInterval := 5000; WSAIoctl(ClientConnection.Socket.Binding.Handle, IOC_IN or IOC_VENDOR or 4, @Val, SizeOf(Val), nil, 0, @Ret, nil, nil);end;