Page 1 of 1

8266 RTOS SDK中Lwip自动分包及重组的问题

Posted: Mon Jun 04, 2018 11:06 pm
by qzrzq
你好,目前我在项目中需要使用8266接收网络数据包,使用Lwip 、socket、UDP协议,一次接收20KB的数据存放在Ram中。
代码如下:

Code: Select all

   struct sockaddr_in socket_addr;
   sock_fd = socket(AF_INET,SOCK_DGRAM,0);
   socket_addr.sin_len = sizeof(socket_addr);
   socket_addr.sin_family = AF_INET;
   socket_addr.sin_port = htons(12321);
   socket_addr.sin_addr.s_addr = inet_addr("192.168.2.101");

   bind(sock_fd, (struct sockaddr *)&socket_addr, sizeof(socket_addr));
   while(1)
   {
      len_rec = recvfrom(sock_fd, (uint8 *)DataBuff,sizeof(DataBuff),0,NULL,NULL);
      printf("len_rec = %d\n",len_rec);
   }

DataBuff是一个20KB的字节数组,全局变量。

在使用RTOS SDK中进行测试的过程中发现,发送端(PC)单次发送的数据包超过1500字节,8266(接收端)就收不到。
在Lwip协议栈中,一般通过修改lwipopts.h文件中的两个宏IP_REASSEMBLY、IP_FRAG为1即可实现IP层的数据包自动分包和重组,但是实际上我修改之后仍然无效,请问是不是还有其他宏需要修改?或者lwip本身有限制?