OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4322|回复: 1

求助LWIP的大文件接收问题

[复制链接]

12

主题

51

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
292
金钱
292
注册时间
2014-3-6
在线时间
31 小时
发表于 2014-4-23 16:35:23 | 显示全部楼层 |阅读模式
小弟最近在学习LWIP,用xiaoyan版主的例子能够实现PC端和开发板之间的通信,但是当我从PC端发送文件过大的时候,接收就不行了

#define LWIP_DEMO_BUF        512
u8 lwip_demo_buf[MY_BUF];

void UDP_client_Receive(void *arg, struct udp_pcb *upcb, struct pbuf *p,   
                 struct ip_addr *addr, u16_t port)
{
  if(p != NULL)                          /* 如果收到的数据不为空   */             
  {
   if((p->tot_len)<LWIP_DEMO_BUF) 
    strcpy((char*)lwip_demo_buf,p->payload);  /* 将收到的数据拷贝到lwip_demo_buf[...]里去 */            
    pbuf_free(p);                       /* 释放缓冲区数据 */
  }
}
这里我修改了定义的是接收最大512字节的数


而在low_level_input()这个函数里面的
    for(q = p; q != NULL; q = q->next) 
{ memcpy((u8_t*)q->payload, (u8_t*)&lwip_buf[rev_len],q->len);
rev_len +=q->len;
    }
其中u8 lwip_buf[1500*2];这个应该是能够接收的最大缓存吧。

如果我有一个几百K的数据要从PC端通过以太网发送给开发板,开发板想以512字节左右进行存储到SD卡或者FLASH里去,处理完之后继续接收下一个512字节,一直到数据传输完为止。这个该怎么改呢?
小弟新手,才开始接触以太网。希望各位高手能给予指点,小弟不胜感激
有人说需要自己做传输协议,不知道具体该怎么做?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

38

主题

2061

帖子

6

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3273
金钱
3273
注册时间
2012-1-16
在线时间
37 小时
发表于 2014-4-23 18:18:54 | 显示全部楼层
回复【楼主位】xiaosi204:
---------------------------------
上位机每发送完512个字节,就和开发板做一次同步(得到开发板处理完数据的响应)。
上位机再发。。循环。。。
站在巨人的肩膀上不断的前进。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 17:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表