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函数。

相关推荐
浅安的邂逅1 天前
ubuntu 18.04及以上版本配置静态IP方法
linux·运维·网络·ubuntu·ip设置
阿巴~阿巴~1 天前
从钓鱼到高性能服务器:深入解析操作系统五大 I/O 模型
运维·服务器·网络·系统调用·五种i/o模型
sunfove1 天前
光网络的立交桥:光开关 (Optical Switch) 原理与主流技术解析
网络
Kevin Wang7272 天前
欧拉系统服务部署注意事项
网络·windows
min1811234562 天前
深度伪造内容的检测与溯源技术
大数据·网络·人工智能
汤愈韬2 天前
Full Cone Nat
网络·网络协议·网络安全·security·huawei
zbtlink2 天前
现在还需要带电池的路由器吗?是用来干嘛的?
网络·智能路由器
桌面运维家2 天前
vDisk配置漂移怎么办?VOI/IDV架构故障快速修复
网络·架构
dalerkd2 天前
忙里偷闲叙-谈谈最近两年
网络·安全·web安全
汤愈韬2 天前
NAT ALG (应用层网关)
网络·网络协议·网络安全·security·huawei