news 2026/9/3 1:12:17

猜测心跳包机制的核心逻辑

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
猜测心跳包机制的核心逻辑

一、心跳包的作用

定时发送一个数据包,等待对方回复。

如果对方在规定时间内回复,说明连接正常;否则出现异常或者收不到回复,说明工作不正常。

二、主要逻辑

(一)定义心跳包的格式

1、发送

1字节类型(值为10)

2字节标识码(值为0xAABB)

2、回复

1字节类型(值为1)

2字节代号(默认为0xFF)

(二)定时发送心跳包

// 记录超时次数

int k = 0;

try{

oo:

while(true){

k = 0;

// 输出心跳包给对方

out.write(Util.getHeart());

// 在3次超时内读取

while(k < 3){

try{

// 设置超时时间为2秒

sock.setSoTimeout(2000);

// 读取回复

Data d = in.read();

// 如果是正确回复,跳出

if(ok(d)){

break;

} else {

// 跳出外层循环

break oo;

}

} catch(SocketException e){

// 超时,次数加一

k++;

}

}

// 如果等于3次,跳出循环

if(k == 3){

break;

}

// 休眠10秒

Thread.sleep(10000);

}

} catch(SocketException e){

}

// 打印提醒连接中断

System.out.print("失去连接");

// 其他处理,移除服务,通知运维

(三)收到心跳包,回复

while(true){

// 读取一个数据包

Data d = in.get();

// 如果类型是10,说明为心跳包

if(d.type() == 10){

// 对心跳包回复

out.write(1);

out.write(00);

out.write(0xFF);

out.flush();

}

}

三、其他情况

1、如果只是监听状态的TCP连接中断,而服务进程还在正常运行,那么此时把服务移除会错误处理。

2、解决思路

再次重连测试,只有超过1次重连后,依然无法连接,就说明服务器出现死机,可以通知运维处理或者从服务列表里移除。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 23:24:07

PyTorch-CUDA-v2.6镜像部署OCR识别系统实战案例

PyTorch-CUDA-v2.6镜像部署OCR识别系统实战案例 在智能文档处理、自动化办公和工业质检等场景中&#xff0c;光学字符识别&#xff08;OCR&#xff09;正从“辅助功能”演变为关键的生产力引擎。然而&#xff0c;许多团队在落地OCR系统时仍面临一个共同困境&#xff1a;模型明…

作者头像 李华
网站建设 2026/9/2 11:24:21

PyTorch-CUDA-v2.6镜像部署RAG检索增强生成系统实战

PyTorch-CUDA-v2.6镜像部署RAG检索增强生成系统实战 在当前大模型驱动的AI浪潮中&#xff0c;如何快速构建一个既能准确回答问题、又能实时调用最新知识的智能系统&#xff0c;已经成为企业与研究团队的核心诉求。传统的语言模型虽然生成能力强&#xff0c;但容易“一本正经地胡…

作者头像 李华
网站建设 2026/8/25 9:41:04

PyTorch-CUDA-v2.6镜像中实现梯度裁剪防止训练爆炸

PyTorch-CUDA-v2.6镜像中实现梯度裁剪防止训练爆炸 在深度学习模型日益复杂、参数量动辄上亿的今天&#xff0c;一个看似微小的技术细节——梯度值异常增大&#xff0c;却可能让数小时甚至数天的训练功亏一篑。你是否曾遇到过这样的场景&#xff1a;模型刚开始训练&#xff0c;…

作者头像 李华
网站建设 2026/9/3 0:46:39

PyTorch-CUDA-v2.6镜像中使用Optuna进行超参数搜索

PyTorch-CUDA-v2.6 镜像中集成 Optuna 实现高效超参数搜索 在深度学习项目开发过程中&#xff0c;一个常见的瓶颈并非模型设计本身&#xff0c;而是如何快速找到一组能让模型性能显著提升的超参数组合。更棘手的是&#xff0c;即便你找到了“好”的参数&#xff0c;换一台机器或…

作者头像 李华
网站建设 2026/9/3 0:44:44

内存管理:避免内存泄漏的方法

在 JavaScript 开发中&#xff0c;内存管理是一个至关重要的话题&#xff0c;合理的内存管理能够避免内存泄漏&#xff0c;提高应用程序的性能和稳定性。本文将深入探讨 JavaScript 中的内存管理机制&#xff0c;以及如何避免内存泄漏的发生。1. 内存管理基础 1.1 内存生命周期…

作者头像 李华
网站建设 2026/9/2 23:55:06

事件委托:优化事件处理性能

在前端开发中&#xff0c;事件处理是构建交互性页面的关键部分。然而&#xff0c;随着页面元素数量的增加和交互复杂度的提升&#xff0c;事件处理的性能问题逐渐凸显。事件委托作为一种有效的优化策略&#xff0c;可以显著提升事件处理的效率&#xff0c;减少内存占用。本文将…

作者头像 李华