小弟初学LWIP,最近在实验用网络传输文件遇到的问题
现在传输小字节数网络可以通,但是发送大文件的时候就不行了
#define MY_BUF 512
u8 my_buf[MY_BUF];
void UDP_client_Receive(void *arg, struct udp_pcb *upcb, struct pbuf *p,
struct ip_addr *addr, u16_t port)
{
uint8_t i=0;
struct ip_addr destAddr = *addr;
if(p != NULL) /* 如果收到的数据不为空 */
{
if((p->tot_len)<MY_BUF)
strcpy((char*)my_buf,p->payload); /* 将收到的数据拷贝到my_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字节,一直到数据传输完为止。这个该怎么改呢?希望各位高手能给予指点,小弟不胜感激
|