TI中文支持网
TI专业的中文技术问题搜集分享网站

关于CC3200 文件下载问题

TI 工程师,你们好!

           1、cc3200-sdk\example\file_download例程中的40K大小的文件下载,HTTP回应的信息里包含有Transfer-Encoding字段,可以成功下载文件;

            2、修改HTTP请求字段,下载局域网内服务器上4MByte的MP3文件,原TI file_download 例程测试出         现错误,不能下载,原因是HTTP回应的信息里HTTP_CONTENT_LENGTH不等于0,是正文的大小;

                   // check if content length is transfered with headers
                 pBuff = (unsigned char *)strstr((const char *)g_buff, HTTP_CONTENT_LENGTH);
                 if(pBuff != 0)
                 {
                   // not supported
                   ASSERT_ON_ERROR(FORMAT_NOT_SUPPORTED);//程序报出FORMAT_NOT_SUPPORTED错误
                 }

         3、修改HTTP消息请求

              #define PREFIX_BUFFER    "GET /assets/uploads/topic/131/audio/1.mp3"
              #define POST_BUFFER      " HTTP/1.1\n\rHost: 192.168.0.123\n\r

              Accept: application/xjpg,audio/mp3, text/html, application/xhtml+xml,*/*\r\n\r\n"
             #define HOST_NAME        "192.168.0.123"

         4、修改代码,用CONTENT_LENGTH后文件大小来控制接收,文件可以正确无误的接收,但接收

              文件的速度很慢,需要2分钟左右才可以接收完成(备注:WIFI环境良好),同样的地方同样的文件,用手机下载,仅需要3~5秒就可以完成。

         根据CC3200规格书描述,WIFI的吞吐量最大可到11MBbps, 文件的下载不应该这么慢,不知我那里没有注意到或者代码还没有修改好,请TI工程师给一些建议,谢谢!      

VV:

把创建文件的大小改大点

jianfeng wu1:

回复 VV:

TI员工,你们好!

             非常感谢你们的回复,但为了测试大文件下载速度,我在整个文件下载过程中,并没有存文件操作,仅仅只是接收文件,统计下载的字节数,代码如下:

  UART_PRINT("Response headers have Content-Length.\r\n");   data_length=Get_Content_Length(g_buff);   isChunked=0;

    //开始处理数据          // "\r\n\r\n" marks the end of headers        pBuff = (unsigned char *)strstr((const char *)g_buff, HTTP_END_OF_HEADER);       if(pBuff == 0)        {           ASSERT_ON_ERROR(INVALID_SERVER_RESPONSE);        }          // Increment by 4 to skip "\r\n\r\n"        pBuff += 4;//指针地址移动到消息实体的头地址

          // Adjust buffer data length for header size        transfer_len =transfer_len- (pBuff – g_buff);//获取HTTP响应消息中正文的字节数  if(data_length<=transfer_len)//如果文件字节数已经全部包含在HTTP响应消息中,不处理   {                     for(i=0;i<data_length;i++)      {                       UART_PRINT("0x%x ",*(pBuff+i));      }    }        else  //data_length>transfer_len,文件比较大,需要多次传输          {

                            while(bytesReceived<data_length)                      {                     bytesReceived +=transfer_len;                                     memset(g_buff, 0, sizeof(g_buff));                         transfer_len = sl_Recv(g_iSockID, &g_buff[0],MAX_BUFF_SIZE , 0);                        pBuff = g_buff;                 }

   UART_PRINT("Downloading File Completed,FILE is %d bytes.\n\r",bytesReceived);       }

后续,还做如下实验:

1、检测AP接入点设置,下载速度没有带宽限制

2、查询局域网服务器的LOG,服务器发送数据到CC3200的字节数正确,time-taken:3227ms,也就是说,整个处理过程,

      花费时间是3秒多,和用其它设备测试的结果差不多。

3、请问对于大文件下载,TI有相关参考代码吗?或者TI下载大文件的速率最快可以达到多少?是不是CC3200设计本身就不针对大文件下载应用这个市场定位?备注:我硬件用的是TI官方的DEMO板。

    很希望能获得你们的回复!

赞(0)
未经允许不得转载:TI中文支持网 » 关于CC3200 文件下载问题
分享到: 更多 (0)