中级会员
- 积分
- 292
- 金钱
- 292
- 注册时间
- 2014-3-6
- 在线时间
- 31 小时
|
小弟最近在学习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字节,一直到数据传输完为止。这个该怎么改呢?
小弟新手,才开始接触以太网。希望各位高手能给予指点,小弟不胜感激
有人说需要自己做传输协议,不知道具体该怎么做?
|
|