You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于LWIP的嵌入式TCP服务端是否可使用Keepalive功能?

LWIP TCP服务端Keepalive功能使用说明

TCP Keepalive是TCP协议规范定义的原生能力,服务端、客户端两侧均可独立启用,不存在仅支持客户端使用的限制,你在嵌入式TCP服务端侧开启该功能检测客户端异常断连是完全可行的。

LWIP启用服务端Keepalive的配置步骤

  • 第一步需要在LWIP的配置头文件lwipopts.h中开启功能总开关:
    #define LWIP_TCP_KEEPALIVE 1
    
  • 你可以根据需求选择全局配置或单连接定制配置两类参数设置方式:
    • 全局默认参数(在lwipopts.h中修改,对所有开启keepalive的TCP连接生效):
      • TCP_KEEPIDLE_DEFAULT:连接无数据交互的空闲时长阈值,达到阈值后开始发送keepalive探测包,单位为毫秒,默认值通常为7200000(即2小时)
      • TCP_KEEPINTVL_DEFAULT:两次探测包的发送间隔,单位为毫秒,默认值通常为75000(即75秒)
      • TCP_KEEPCNT_DEFAULT:连续无响应的探测次数阈值,达到阈值后判定连接异常,默认值通常为9次
    • 单连接定制配置:可通过setsockopt()接口单独为服务端监听产生的每个连接设置SO_KEEPALIVE、TCP_KEEPIDLE、TCP_KEEPINTVL、TCP_KEEPCNT选项,也可调用LWIP原生接口tcp_keepalive_enable()启用,适合不同业务属性的连接使用不同的探测规则。

嵌入式场景使用建议

  • 默认的全局参数探测周期过长,建议根据业务可接受的断连感知延迟调整参数,比如设置为空闲30秒开始探测、探测间隔5秒、连续3次无响应判定断连,即可在45秒左右感知到客户端异常断连。
  • 连接判定异常后LWIP会自动关闭对应连接,你可以在TCP错误回调中通过ERR_ABRT状态码感知该事件,及时清理连接对应的业务资源即可。

内容的提问来源于stack exchange,提问作者Lamastaga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 05:45:05