ESP8266 Developer Zone The Official ESP8266 Forum 2018-06-04T23:06:44+08:00 https://bbs.espressif.com:443/feed.php?f=7&t=10149 2018-06-04T23:06:44+08:00 2018-06-04T23:06:44+08:00 https://bbs.espressif.com:443/viewtopic.php?t=10149&p=20624#p20624 <![CDATA[8266 RTOS SDK中Lwip自动分包及重组的问题]]> 代码如下:

Code:

   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本身有限制?

Statistics: Posted by qzrzq — Mon Jun 04, 2018 11:06 pm


]]>