lwip连续发数据卡死_用lwip发送大量数据时,遇到的问题解答记录;

这两天,师弟在两台电脑上搭建了lwipwin32通信平台,目的是能够不断发送一幅幅图片图像大小为1280*720大小的图片。如果不考虑压缩情况且是256色即1字节,这样大小的一幅图片需要发送大约发送1M字节。具有李逵性格的山东师弟目标是:客服端发送一次请求,服务器端能够通过TCP方式一次发送大约1M的数据;我震惊了, 我说你可知道MTU(1500)的上限,以及内存的考虑。当然让每次发送一次数据量尽可能大,这种想法是好的;看着他每天哀声叹气,临近毕业的我深表同情,另外我对lwip也蛮干感兴趣的,一直都想玩玩这个技术,但一直没有机会,言归正传,稍微介绍下lwip。

1、概述:lwip是轻量型的TCP/IP实现,只需10几KB的RAM和40几KB的ROM就能够跑起来,适合应用于嵌入式设备的网络通信。有牛人Adam Dunkels发明,提供给用户上那种接口

RAW TCP/IP、Squential API, BSD API(也就是常说的socket编程),前者编程稍微复杂点,协议和应用程序在一个进程里面,但是效率高。中者首先要操作系统的支持,但是一旦实现了操作系统模拟层的实现,编程妥妥的。后者是为了符合人们使用socket编程的习惯而模拟的socket实现。所以王者乃RAW TCP/IP。网上提供了源码的下载,现在已经更新至1.4.x(doc 开发与移植指导文档, src 源码 test 测试例子),doc里面罗列了RAW TCP/IP的开发接口函数。

2、demo搭建:

服务器端:

0 open_t

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果在 Zynq 上使用 LWIP 连续接收数据出现卡死的情况,可能是由于以下原因之一: 1. 数据接收缓冲区溢出:如果你的应用程序有及从接收缓冲区中读取数据,缓冲区可能会溢出,导致系统停止响应。为了解决这个问题,你可以在接收到数据后及读取并处理数据,并确保接收缓冲区的大小足够大以容纳你的应用程序的需求。 2. 中断处理问题:LWIP 使用中断来处理网络数据包的接收和发送。如果中断处理函数中存在问题,可能会导致系统卡死。确保中断处理函数正确地处理接收数据并将其放入接收缓冲区。 3. 资源竞争:如果你的应用程序中存在多个任务同访问网络资源(如接收缓冲区),可能会导致资源竞争,从而导致系统卡死。确保在访问共享资源进行适当的同步和互斥操作,以防止竞争条件的生。 4. 内存不足:如果内存不足,可能会导致系统停止响应。确保你的系统具有足够的内存来处理接收到的数据以及其他系统任务。 5. 硬件配置问题:检查 Zynq 上的网卡和网络连接是否正确配置。确保正确设置 MAC 地址、IP 地址和网络参数。 如果以上方法仍无法解决问题,建议对系统进行调试和排查。可以使用调试工具来跟踪代码执行路径、查看内存使用情况和检查网络数据流动情况,以帮助确定问题的根本原因。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值