最近基于 stm32f107  做lwip 网络开发, 开启 dhcp 和 sntp 服务, 一个udp 并且是多播 和 一个tcp,开发是基于 stm32cube 工具生成的代码,LWIP 配置如下:

工作时出现了很奇怪的问题:

如果先开 sntp    ( 执行sntp_init() ) 那么 后面的 tcp 过一段时间后会无法主动发送数据,

如果先开 tcp , 则 sntp 只能执行一次,不根据设置的 SNTP_UPDATE_DELAY 定时同步时间。

仿真发现 ,如果先开 sntp ,则后面tcp 的 tcp_poll 回调函数无法回调,如果先开 tcp 则 sntp 的回调函数无法被执行。

问题很奇怪,总之谁先初始化,谁就能正常工作,谁后初始化,谁就有异常!

怀疑过  很多东西,曾把 tcp 与 udp 的数量增加到 5,5,或,5,6 ,都还是有一样的问题。

最后怀疑是回调定时器的个数可能不够用,找了上图配置界面没找到相关的设置参数,最后在 lwip 源码中的 opt.h 中找到

#if !defined MEMP_NUM_SYS_TIMEOUT || defined __DOXYGEN__
#define MEMP_NUM_SYS_TIMEOUT            (LWIP_TCP + IP_REASSEMBLY + LWIP_ARP + (2*LWIP_DHCP) + LWIP_AUTOIP  + LWIP_IGMP + LWIP_DNS + (PPP_SUPPORT*6*MEMP_NUM_PPP_PCB) + (LWIP_IPV6 ? (1 + LWIP_IPV6_REASS + LWIP_IPV6_MLD) : 0))
#endif

发现没有 LWIP_SNTP 项,果断加上 LWIP_SNTP  :

#if !defined MEMP_NUM_SYS_TIMEOUT || defined __DOXYGEN__
#define MEMP_NUM_SYS_TIMEOUT            (LWIP_TCP + IP_REASSEMBLY + LWIP_ARP + (2*LWIP_DHCP) + LWIP_AUTOIP + LWIP_SNTP + LWIP_IGMP + LWIP_DNS + (PPP_SUPPORT*6*MEMP_NUM_PPP_PCB) + (LWIP_IPV6 ? (1 + LWIP_IPV6_REASS + LWIP_IPV6_MLD) : 0))
#endif

重新编译工程,问题完美解决!!SNTP 与 TCP 均能正常工作,回调任务都能正常回调。

lwip 开发 sntp 与 tcp 不能同时工作的奇怪问题相关推荐

  1. android手机版tcp或者udp通讯测试工具,可以用于工业设备或者系统开发时间测试tcp或是udp连接通讯是否正常工作

    TUtool 介绍 由于工作需要一款安卓的tcp udp测试工具,而市场里没有或者不好用,或者都是广告,现在个人开发者又不让发布应用了,小巧好用不收集用户信息的不收费没有广告的小工具只能自己用,哈哈. ...

  2. Redis运维和开发学习笔记(6) 监控Redis工作状态-info命令

    Redis运维和开发学习笔记(6) 监控Redis工作状态-info命令 文章目录 Redis运维和开发学习笔记(6) 监控Redis工作状态-info命令 info server info clie ...

  3. 《 Python程序设计项目案例》— 用Python开发的基于TCP通讯协议的私人聊天室 (期末大作业、结课作业、课程设计、毕业设计)

    基于Python与TCP协议的私人聊天室(GUI交互界面,用户注册.用户登录.实时聊天,文件上传与下载) 用Python开发的基于TCP通讯协议的实时聊天通讯和文件共享应用 目录 基于Python与T ...

  4. 某百亿量化金融公司base北上杭深现招岗位:C++量化系统开发工程师年base40-80万+bonus工作职责1. 参与交易平台的设计、开发与测试,实现交易策略、风控等需求;2. 开发交易

    某百亿量化金融公司 base北上杭深 现招岗位:C++量化系统开发工程师 年base40-80万+bonus 工作职责 1. 参与交易平台的设计.开发与测试,实现交易策略.风控等需求: 2. 开发交易 ...

  5. 远程控制软件开发_软件开发人员的远程工作

    远程控制软件开发 Advantages 优点 Work from home 在家里工作 Manage your time 管理你的时间 Work when you are more productiv ...

  6. esp8266系列学习(四)——esp8266+手机端+路由器(路由可上网)组成物联网与广域网建立tcp通信的工作模式设定方法

    四.esp8266+手机端+路由器(路由可上网)组成物联网与广域网建立tcp通信的工作模式设定方法 前言:esp8266模块和手机同时接入在一个路由下,通过路由器建立二者之间的tcp通信,模块设置为客 ...

  7. 【TCP】【JPerf】基于STM32H7开发板的TCP性能测试

    1.源码已上传,见路径https://download.csdn.net/download/guanlizhongxintishi/11197638 2.使用jperf-2.0.0工具对开发板进行TC ...

  8. 工具推荐:程序员必备的 7 个开发工具,让你的工作效率提升200%

    如果要想早点完成自己的工作,就必须借助于一些开发工具来提高自己的工作效率,今天就给大家总结一些工作中常用到的工具. Everything 不知道大家在日常工作中会不会遇到这样的情况,每次找文件的时候总 ...

  9. 《lwip学习10》-- TCP协议

    TCP服务简介 UDP 运载的数据是以报文的形式,各个报文在网络中互不相干传输, UDP 每收到一个报文就递交给上层应用,因此如果对于大量数据来说,应用层的重装是非常麻烦的,因为UDP 报文在网络中到 ...

最新文章

  1. 多项式乘法 FFT模板
  2. Github 开源了新型肺炎防疫项目,助力抗击疫情!
  3. estemplate 导入MySQL_[数据库]es~通过ElasticsearchTemplate进行聚合操作
  4. 样本不均衡、长尾分布问题的方法整理(文献+代码)
  5. 用jQuery做点击下箭头改变方向
  6. [转载] 【C/C++】Vector的创建与初始化方法
  7. spark数据倾斜解决之提高并行度
  8. WiFi语音智能家居控制系统(一)
  9. 什么是SNP遗传力?
  10. 一、物流的基本概念|1.2现代物流管理的形成和发展
  11. 搜狗推广管家 v8.3
  12. [原创]安全系列之端口敲门服务(Port Knocking for Ubuntu 14.04 Server)
  13. Vue3+Ant-design项目启用ts/typescript
  14. Linux ping命令
  15. RHCE认证考试心得(转)
  16. Python3的安装步骤
  17. linux 安装监听中文,cacti中文安装配置与监控wWindows Server和Linux服务器
  18. VLSI数字信号处理系统——第二章迭代边界
  19. 今日头条信息流广告浅尝截止
  20. 腾讯企鹅号新分成策略试运行 引领内容产业回归初心

热门文章

  1. 修改Tomcat可支持get传参方式的url长度,get形式
  2. Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) E. DNA Evolution 树状数组
  3. 转:WebApi(一)
  4. XDOJ-1093-一元三次方程
  5. java jdk1.5 对for循环遍历的优化
  6. Android 通过 XMPP 实现聊天功能,App Engine Assisted Group Chat (开源)
  7. Deseq的理论基础
  8. UA MATH567 高维统计III 随机矩阵3 集网与覆盖
  9. 脑与认知科学1 脑的基本结构下
  10. 用CFree写的Windows SDK 画线程序