自定义协议:如何实现keepalive

2023-11-17

什么是keepalive

Keepalive是一种技术,它可以帮助保持网络连接活跃,避免链路失效。它可以通过给双方发送定期的探测报文,来确认对侧主机是否仍然处于可用状态,并采取必要的措施保持链路的连接性、可靠性和可用性。

tcp如何实现keepalive

tcp提供了相关函数

客户端TCP keep-alive:
// 设置keep-alive参数
int optval = 1;
setsockopt(sockfd, SOL_SOCKET, SO_KEEPALIVE, &optval, sizeof(int));
// 设置keep-alive间隔 
optval = 10; // 10s 
setsockopt(sockfd, IPPROTO_TCP, TCP_KEEPIDLE, &optval, sizeof(int));
// 设置探测次数 
optval = 3; // 每10s探测3次 
setsockopt(sockfd, IPPROTO_TCP, TCP_KEEPCNT, &optval, sizeof(int));
// 设置探测间距 
optval = 2; // 每2s探测一次 
setsockopt(sockfd, IPPROTO_TCP, TCP_KEEPINTVL, &optval, sizeof(int));

http如何实现keepalive

http在1.1版本实现了keepalive
HTTP/1.1实现keep-alive的方法如下:

  1. 客户端向服务端发出请求时附带Connection: keep-alive
request = "GET / HTTP/1.1\r\n" + \ 
"Host: example.com\r\n" + \
"Connection: keep-alive\r\n" + \ # 附带此行
"\r\n"
  1. 服务端正常回复,并附带上Connection: keep-alive
response = "HTTP/1.1 200 OK\r\n" + \ 
"Connection: keep-alive\r\n" + \ # 附带此行
"Content-Length: {}\r\n".format(len(data)) + \
"\r\n" + data
  1. 客户端重用连接,后续请求仍使用此TCP连接
request = "GET /other_url HTTP/1.1\r\n" + \ 
"Host: example.com\r\n" + \
"Connection: keep-alive\r\n" + \ # 仍然附带此行
"\r\n"

自定义协议时该怎样实现keepalive

1.客户端定时发送心跳包:客户端定时发送心跳包,服务端收到后即回复确认码,客户端收到确认码即表示连接状态正常;
2.服务端检测客户端:服务端定时检测客户端是否响应心跳包,若客户端在指定时间内未收到确认码,则关闭该连接;
C++ demo代码:

#include <iostream>
#include <string>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <cstring>
#include 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自定义协议:如何实现keepalive 的相关文章

  • 分辨公网IP和内网IP的方法

    公网IP一般就是对外的访问地址 内网IP就是对内的访问地址 两者的使用范围是不一样的 那如果区分客户网络的IP地址是公网IP地址还是内网IP地址呢 公网IP的地址范围是很广泛的 我们可以先了解下内网IP 因为内网IP的地址段相对是局限的 一
  • 网络安全现状:揭秘白帽黑客的真实收入

    前言 作为一个网络安全行业五年打工仔 今天就来看看黑客的收入和方向怎么样 一个黑客年薪是多少呢 外界普遍认为黑客是高收入群体 那么你想过黑客是怎么获得收入的吗 黑客分为白帽黑客和黑帽黑客 处于黑白两道的黑客会的技术都有些相似 但是却是对立的
  • 一个网工(网络工程师)七年的职业血泪史....

    前言 一个工作了七年的老网工 上家公司待了五年 现在这家公司也快三年了 分享一些我自己学习网络安全路上的一些经历 也算是帮大家少走些弯路 一 如何学习网络安全 1 不要试图以编程为基础去学习网络安全 不要以编程为基础再开始学习网络安全 一般
  • 从外卖员到程序员,自学3年终于转行成功,三面“拿下”拼多多

    前言 先来自我介绍 老家农村 家里好不容易把我送到大城市读书 大学非985 211 但在我们老家 能出一个本科大学生也是非常不容易的 因为农村信息的相对闭塞 我对大学专业一无所知 加上分数并非前茅 最后被调剂一个我并不喜欢的专业 这里就不透
  • 工作五年,一年内我靠这系列java面试宝典从13K到大厂30K

    我认为对于面试以及进阶最佳的学习方法莫过于 刷题 博客 书籍 总结 前三者我将淋漓尽致地挥毫于这篇文章中 至于总结要靠个人 实际上越到后面你越会发现面试并不难 其次就是在刷题的过程中有没有去思考 刷题只是次之 这又是一个层次了 这里暂时不提
  • Java面试资料合集(24年目前最全整理面试跳槽必备)

    有了他们闭着眼睛也能找到工作 这段时间不是正好到了金三银四的季节了嘛 我司前段时间在整体环境不是很景气的大前提下也是招到了很多的开发小伙伴 听到开发组的组长说这批进来的一些新人还算是很优秀的 本来我心里的小算盘是 这样后面再给他们提一些需求
  • 真的干不过,00后整顿职场已经给我卷麻了,想离职了...

    在程序员职场上 什么样的人最让人反感呢 是技术不好的人吗 并不是 技术不好的同事 我们可以帮他 是技术太强的人吗 也不是 技术很强的同事 可遇不可求 向他学习还来不及呢 真正让人反感的 是技术平平 却急于表现自己的人 每天加班到12点 在老
  • 【面试】 前端竞争压力大?揭秘让你们学后端的真实动机!

    前端开发属于程序员吗 网友是这样回答的 看完前端同学的评论 我悟了 你们让人都去学后端卷 然后减小前端竞争压力是吧 哈哈哈 你们这帮老6 于是我去拿出了我收藏的 某前端招聘JD来盘一盘 那些觉得 是个人都能干前端 的同学们想必已经熟练掌握了
  • 5个步骤,教你瞬间明白线程和线程安全

    记得今年3月份刚来杭州面试的时候 有一家公司的技术总监问了我这样一个问题 你来说说有哪些线程安全的类 我心里一想 这我早都背好了 稀里哗啦说了一大堆 他又接着问 那你再来说说什么是线程安全 然后我就GG了 说真的 我们整天说线程安全 但是对
  • WEB前端常见受攻击方式及解决办法总结

    一个网址建立后 如果不注意安全问题 就很容易被人攻击 下面讨论一下集中漏洞情况和放置攻击的方法 一 SQL注入 所谓的SQL注入 就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串 最终达到欺骗服务器执行恶意的SQL命
  • 2024年金三银四网络安全考试试题

    2023年金三银四网络安全考试试题 1 关于数据使用说法错误的是 A 在知识分享 案例中如涉及客户网络数据 应取敏感化 不得直接使用 B 在公开场合 公共媒体等谈论 传播或发布客户网络中的数据 需获得客户书面授权或取敏感化 公开渠道获得的除
  • 【网安神器篇】——WPScan漏洞扫描工具

    目录 一 Wordpress简介 二 WPScan介绍 三 安装 四 获取token 1 注册账号 2 拿到token 五 使用教程 1 常用选项 2 组合命令 1 模糊扫描 2 指定扫描用户 3 插件漏洞扫描 4 主题漏洞扫描 5 Tim
  • HPE Aruba Networking:五大网络现代化策略助力实现校园数字化转型

    作者 Aruba中国区技术销售总监 俞世丹 全球数字化进程日益加深 科技已成为加速教育行业发展的重要驱动力 人工智能 大数据 云计算 物联网 虚拟现实等新兴技术的快速发展 正在深刻改变着教育的形态和模式 为了更好地满足学校师生个性化教育教学
  • 网络安全基础知识面试题库

    1 基于路由器的攻击手段 1 1 源IP地址欺骗式攻击 入侵者从外部传输一个伪装成来自内部主机的数据包 数据包的IP是 内网的合法IP 对策 丢弃所有来自路由器外端口 却使用内部源地址的数据包 1 2 源路由攻击 入侵者让数据包循着一个不可
  • (2024最新整理)Java最全八股文及答案!

    Java的特点 Java是一门面向对象的编程语言 面向对象和面向过程的区别参考下一个问题 Java具有平台独立性和移植性 Java有一句口号 Write once run anywhere 一次编写 到处运行 这也是Java的魅力所在 而实
  • 最新整理Java面试八股文,大厂必备神器

    在看这篇文章之前 我想我们需要先搞明白八股文是什么 明清科举考试的一种文体 也称制义 制艺 时文 八比文 八股文章就四书五经取题 内容必须用古人的语气 绝对不允许自由发挥 而句子的长短 字的繁简 声调高低等也都要相对成文 字数也有限制 八股
  • Synchronized 锁机制

    为了避免临界区的竞态条件发生 可以用非阻塞式的原子变量 也可以用阻塞式的锁 Java 多线程的锁都是 对象锁 采用互斥的方式让同一时刻只有一个线程能够持有对象锁 从而进入临界区 而其它线程只能阻塞等待 因此不用担心线程上下文切换造成共享资源
  • 短信系统搭建主要因素|网页短信平台开发源码

    短信系统搭建主要因素 网页短信平台开发源码 随着移动互联网的快速发展 短信系统已成为企业和个人进行信息传递的重要工具 建立一个高效可靠的短信系统对于企业来说非常重要 下面我们将介绍一些影响短信系统搭建的主要因素 1 平台选择 在搭建短信系统
  • 2024最强Java面试八股文合集(持续更新)

    今天要谈的主题是关于求职 求职是在每个技术人员的生涯中都要经历多次 对于我们大部分人而言 在进入自己心仪的公司之前少不了准备工作 有一份全面细致 面试题 将帮助我们减少许多麻烦 在跳槽季来临之前 特地做这个系列的文章 一方面帮助自己巩固下基
  • 网络安全行业热门认证证书合集

    网络安全认证证书 就和学历一样是敲门砖 拿到了可以用不到 但不能没有 技术大牛可以没有证书 但普通人不能没有 1 初级入门 就像学历在职场上展示一个人的基本素养一样 网络安全认证证书可以展示一个人在网络安全领域具备的基本知识和技能 它为初学

随机推荐

  • id注册

    直接在官网选择US就行了 然后就可以登陆
  • 剑指 Offer 07. 重建二叉树

    重建二叉树 思路 在前序遍历中找到根节点的值 然后在中序遍历中根据根节点的值划分左右子树 然后在左右子树里面递归调用同样的代码 再进行划分 package swordPointingToTheOffer import java util H
  • Centos设置nginx开机自启动

    第一步 进入到 lib systemd system 目录 root iz2z init d cd lib systemd system 第二步 创建nginx service文件 并编辑 vim nginx service 内如如下 Un
  • 抖音小程序实践四:实现小程序分享

    有时候我们要把一个小程序分享给别人 去看套餐 买东西之类的 是一个很常见的功能 但是在接入抖音小程序的时候 初始化右上角三个点并没有分享的入口 那看来不是要申请 就是有别的开发的口子了 下面我们一起了解下 从一个菜鸟的角度 我登录开发者后台
  • android 取消点击监听,Android中的活动中的软键盘打开和关闭监听...

    这仅适用于android 您的活动的windowSoftInputMode在清单中设置为adjustResize 您可以使用布局侦听器来查看键盘是否调整了活动的根布局 我为我的活动使用类似下面的基类 public class BaseAct
  • JetBrains :IDEA入门与使用技巧分享

    本文假设读者已掌握基础的开发方式 了解常见的概念 只是刚入手IDEA 不熟悉工具的使用方式而已 本文编写于 2019年7月27日 一 准备 以下是本文使用到的工具 工具与环境 IntelliJ IDEA Ultimate 2019 2 各个
  • DNS地址

    阿里云公共dns 223 5 5 5 223 6 6 6 腾讯公共dns 119 29 29 29 微步 拦截版 117 50 11 11 52 80 66 66 纯净版 117 50 10 10 52 80 52 52 360公共dns
  • 顺序表的定义及初始化代码实现(C语言)

    适合初学数据结构 不明白如何通过代码实现顺序表 超简洁代码如下 2020 10 16 第一次修改 顺序表结构定义的data是数组类型 应采用静态分配 模糊了静态分配与动态分配 已修改 错误程序L gt data 10 int malloc
  • 报错Description Resource Path Location Type Lifecycle mapping "org.eclipse.m2e.jdt.JarLifecycleMapping

    我这边是因为eclipse想做spring boot项目 因此想安装STS插件 结果装了几个版本 发现都没用 还导致POM XML文件报错 解决问题 1 卸载STS插件 help Install New Software 点击 what i
  • 一个矩阵乘以它本身的转置等于什么

    如果一个矩阵 A 乘以它本身的转置 AT 那么结果就是一个对角矩阵 对角线上的元素就是 A 矩阵中每一列的平方和 其余的元素都是 0 例如 如果 A 矩阵是 a11 a12 a21 a22 那么 A 乘以 AT 就是 a11 2 a21 2
  • 网道 JS教程 (第一天)

    地址 https wangdoc com javascript js 特点 单线程 事件驱动 非阻塞式设计 数据类型 数值 number 整数和小数 比如1和3 14 字符串 string 文本 比如Hello World 布尔值 bool
  • 关闭或者半关闭?!

    2017 05 20 LIBnids这个库 对于关闭的两个状态 理解的不是很清楚 就是 CLOSE算一个状态 CLOSE之前并不调用EXITING的语句 这就很尴尬 目前就当这两个是同一个状态 但是看着有些数据包是关闭的 结果显示不关闭 这
  • 模块学习笔记—(1)编码器减速电机

    模块学习笔记 1 编码器减速电机 编码器电机作用 编码器电机转动可以产生脉冲信号 根据脉冲信号 可以得出轮胎的转动速度 轮胎的位移 电机正反转等 电机介绍 我的编码器电机是130TT减速电机 电机轴转一圈可以产生13个脉冲信号输出 电机减速
  • 使用UUID获得一个不重复的16位账号的算法

    public static String getAccountIdByUUId int machineId 1 最大支持1 9个集群机器部署 int hashCodeV UUID randomUUID toString hashCode i
  • java运行环境

    计算机基础知识 二进制 如图 十进制和二进制的转换 字节 计算机中一个0或者一个1就是一个位 bit 不过并不是最小的数据单位 最下的数据单位是字节 Byte 一个字节等于8个位 计算机中任何数据的存储都是以字节的形式存储 1 B 8 bi
  • 2、线程池篇 - 从理论基础到具体代码示例讲解(持续更新中......)

    前言 暂无 一 线程篇 有关线程部分的知识整理请看我下面这篇博客 1 线程篇 从理论到具体代码案例最全线程知识点梳理 持续更新中 二 线程池基础知识 线程池优点 他的主要特点为 线程复用 管理线程 不需要频繁的创建和销毁线程 控制线程数量
  • html 登录页面 简洁,简单登录html页面

    简单的登录页面 一个简单pc 移动端显示的html codeDocument margin 0px padding 0px bg width 100 height 45vh text align center color fff backg
  • Could not generate command line for the ‘VCCLCompilerTool’ tool

    转载自 http blog csdn net shirui1125 article details 6095774 gt ToolBox error PRJ0004 未能为 VCCLCompilerTool 工具生成命令行 从原有的平台复制
  • AD采集中的10种经典软件滤波程序优缺点分析(附程序)

    在AD采集中经常要用到数字滤波 而不同情况下又有不同的滤波需求 下面是10种经典的软件滤波方法的程序和优缺点分析 1 限幅滤波法 又称程序判断滤波法 2 中位值滤波法 3 算术平均滤波法 4 递推平均滤波法 又称滑动平均滤波法 5 中位值平
  • 自定义协议:如何实现keepalive

    高可用协议招式 keepalive 什么是keepalive tcp如何实现keepalive http如何实现keepalive 自定义协议时该怎样实现keepalive 什么是keepalive Keepalive是一种技术 它可以帮助