lwip TCP client & FreeRTOS 打开TCP 的 保活机制 LWIP_TCP_KEEPALIVE==1
来源:互联网 发布:淘宝店铺处罚规则 编辑:程序博客网 时间:2024/05/22 17:21
第一步:在opt.h中 LWIP_TCP_KEEPALIVE 置1
/** * LWIP_TCP_KEEPALIVE==1: Enable TCP_KEEPIDLE, TCP_KEEPINTVL and TCP_KEEPCNT * options processing. Note that TCP_KEEPIDLE and TCP_KEEPINTVL have to be set * in seconds. (does not require sockets.c, and will affect tcp.c) */#if !defined LWIP_TCP_KEEPALIVE || defined __DOXYGEN__#define LWIP_TCP_KEEPALIVE 1#endif
第二步:在lwipopts.h文件中添加 四个宏定义
#define TCP_KEEPIDLE_DEFAULT 3000UL // 5秒内连接双方都无数据,则发起保活探测(该值默认为2小时)#define TCP_KEEPINTVL_DEFAULT 1000UL // 每1秒发送一次保活探测//保活机制启动后,一共发送5次保活探测包,如果这5个包对方均无回应,则表示连接异常,内核关闭连接,并发送err回调到用户程序#define TCP_KEEPCNT_DEFAULT 5UL #define TCP_MAXIDLE TCP_KEEPCNT_DEFAULT * TCP_KEEPINTVL_DEFAULT
第三步:因为 我 做的 是 TCP client ,协议栈不默认打开保活机制,因此需要打开。
这里一定 要在 conn = netconn_new(NETCONN_TCP); 这句代码之后进行 设置否则 造成内存错误啊 。。
/* Create a new connection identifier. */ conn = netconn_new(NETCONN_TCP); if (conn!=NULL) { //打开TCP 的保活功能 (客户端不默认打开) conn->pcb.tcp->so_options |= SOF_KEEPALIVE;//SOF_KEEPALIVE=0x08U
第四步:编译发现不能通过,需要包含两个头文件
#include "lwip/tcp.h"#include "lwip/ip.h"
阅读全文
0 0
- lwip TCP client & FreeRTOS 打开TCP 的 保活机制 LWIP_TCP_KEEPALIVE==1
- Lwip 保活机制 1
- 设置自己的TCP保活机制
- LWIP[转]关于TCP保活功能及其应用
- lwip raw tcp/client 实现
- 《LwIP协议栈源码详解——TCP/IP协议的实现》TCP坚持与保活定时器
- Lwip 保活机制 2
- TCP的保活时间
- TCP保活的必要性
- TCP保活的必要性
- Tcp(keepalive)保活机制
- TCP保活定时器
- TCP保活
- TCP保活
- TCP保活
- TCP保活定时器
- (23)TCP的保活定时器
- TCP/IP 第23章 TCP的保活定时器
- CSU 1203: Super-increasing sequence 水题
- 博弈——Good Luck in CET-4 Everybody!
- 详解spring 每个jar的作用
- UVa 12161 Ironman Race in Treeland(树分治)
- Leetcode--Two Sum
- lwip TCP client & FreeRTOS 打开TCP 的 保活机制 LWIP_TCP_KEEPALIVE==1
- CSU 1233: 病毒的复制 矩阵快速幂
- meanshift追踪手动选框(python-opencv)
- stl之双端队列deque
- hdu-6092-Rikka with Subset(思维)
- 散列查找
- CSU 1092: Barricade (dijkstra+heap)
- 如何正确地写出单例模式
- 图文混排