Lwip使用RAW API进行TCP连接的tcp_err问题

现象:

TCP Server关闭状态下发起连接产生err,并且调用了回调函数tcp_err_fn,错误码是-14(ERR_RST)。在应用程序中调用tcp_close时出错。

c 复制代码
typedef void  (*tcp_err_fn)(void *arg, err_t err);
void tcp_err(struct tcp_pcb *pcb, tcp_err_fn err);

出错原因:

在连接上发生致命错误时会调用tcp_err_fn定义的回调函数。调用的目的是通知应用程序当前连接发生了致命错误,之后tcp的pcb会被自动释放。因此应用程序再次调用tcp_close时会导致访问已经被释放的内存导致出错。

在代码中可以看到使用TCP_EVENT_ERR宏调用回调函数后,会接着移除并释放pcb,此时应用程序只需要在tcp_err_fn回调函数中把pcb的指针置为NULL,防止错误的调用tcp_close函数。

相关推荐
2301_780789662 小时前
渗透测试真的能发现系统漏洞吗
服务器·网络·安全·web安全·网络安全
天天开心a2 小时前
华为HCIP-Datacom-Core Technology H12-831 书籍目录
网络·华为
Davie_Liu2 小时前
【Docker Buildx】docker buildx本地构建多架构镜像,拉取镜像时的网络延迟问题(已解决)
网络·docker·buildx
提笔忘字的帝国3 小时前
宝塔SSL自动续签
网络·网络协议·ssl
上海云盾商务经理杨杨3 小时前
高防IP如何抵御CC攻击?2025年全面防护机制解析
网络·网络协议·tcp/ip·网络安全
李白你好3 小时前
Ping命令为何选择ICMP而非TCP/UDP?
网络协议·tcp/ip·udp
bug攻城狮3 小时前
CentOS 7 设置静态 IP 地址
linux·tcp/ip·centos
青草地溪水旁4 小时前
网络包如何经过互联网接入路由器进入互联网内部?
网络·网络编程‘
yb0os14 小时前
RPC实战和核心原理学习(一)----基础
java·开发语言·网络·数据结构·学习·计算机·rpc
乱飞的秋天5 小时前
网络编程学习
网络·学习·php