lwip TCP client & FreeRTOS 打开TCP 的 保活机制 LWIP_TCP_KEEPALIVE==1

摘要:
它必须在conn=netconn_new中;稍后应设置此代码,否则将导致内存错误=NULL){//启用TCP实时保存函数conn-˃pcb.TCP-˃so-options|=SOF_KEEPALIVE;//SOF_KEPEALIVE=0x08U步骤4:发现编译失败,需要包含两个头文件#include“lwip/TCP.h”#include”lwip/ip.h“。确定

参考大神教程:http://blog.sina.com.cn/s/blog_62a85b950101aw8x.html   老衲五木

      :http://blog.sina.com.cn/s/blog_62a85b950102vrr4.html     老衲五木

      :http://blog.csdn.net/zhzht19861011/article/details/46564699 朱工

第一步:在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     5000UL       // 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"

OK了 

免责声明:文章转载自《lwip TCP client & FreeRTOS 打开TCP 的 保活机制 LWIP_TCP_KEEPALIVE==1》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇PostGIS拓扑:TOPOLOGY处理win7任务栏通知区域图标异常问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux服务器防火墙白名单设置

 公司最近对网络安全抓的比较严,要求防火墙必须开启,但是项目的服务器有五六台,三台用于负载均衡,服务器之间必须要进行各种连接,那就只能通过添加白名单的方式。   登上服务器,编辑防火墙配置文件   vi /etc/sysconfig/iptables   把需要访问本台服务器的其他服务器ip地址,以及本台服务器需要开放的端口号添加上   如下: # F...

TCP内核参数

tcp_syn_retries :INTEGER默认值是5对于一个新建连接,内核要发送多少个 SYN 连接请求才决定放弃。不应该大于255,默认值是5,对应于180秒左右时间。(对于大负载而物理通信良好的网络而言,这个值偏高,可修改为2.这个值仅仅是针对对外的连接,对进来的连接,是由tcp_retries1 决定的)tcp_synack_retries :...

tcp流量控制与拥塞控制

一:流量控制 什么是流量控制?流量控制的目的? 如果发送者发送数据过快,接收者来不及接收,那么就会有分组丢失。为了避免分组丢失,控制发送者的发送速度,使得接收者来得及接收,这就是流量控制。流量控制根本目的是防止分组丢失,它是构成TCP可靠性的一方面。 如何实现流量控制? 由滑动窗口协议(连续ARQ协议)实现。滑动窗口协议既保证了分组无差错、有序接收,也实...

TCP的核心系列 — SACK和DSACK的实现(三)

不论是18版,还是37版,一开始都会从TCP的控制块中取出SACK选项的起始地址。 SACK选项的起始地址是保存在tcp_skb_cb结构的sacked项中的,那么这是在什么时候做的呢? SACK块并不是总是合法的,非法的SACK块可能会引起处理错误,所以还需要进行SACK块的合法性检查。 本文主要内容:TCP首部中SACK选项的解析和地址的获取,SACK...

SQL2005:由于目标机器积极拒绝,无法连接

连接2005sql时,页面提示错误如下: 在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: TCP 提供程序, error: 0 - 由于目标机器积极拒绝,无法连接。) 解决方案: 主要就是一些sql服务没有启动,在 sql se...

Linux Linux内核参数调优

Linux内核参数调优 by:授客QQ:1033553122 关于调优的建议: 1、出错时,可以查看操作系统日志,可能会找到一些有用的信息 2、尽量不要“批量”修改内核参数,笔者就曾这么干过,结果“调优”后,性能反而下降,事务出错数反而增加,所以,调优的时候可以考虑逐个参数进行调优,然后对比效果。   说明:我也不是很懂,参考自网络整理了下可能需要调整...