首先解决tcp模拟http get文件,整整浪费了一周时间:

废话不多说,http请求头长这样:

GET /ota/wifi/test/magpie.bin HTTP/1.1
Host: powerview.oss-cn-hangzhou.aliyuncs.com
Accept:*/*
Connection:Keep-Alive

特别提醒,最后1行空白必须存在,也就是一定要有一行空白

搞了个大乌龙,tcp发送get的长度没检查,原来一直是0,直到自己搭建了http本地服务器才发现这个坑

这是python写的http服务器

def httpserver(self):server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)server_socket.bind(("", 8000))server_socket.listen(128)while True:try:client_socket, client_address = server_socket.accept()print("[%s, %s]用户连接上了" % client_address)request_data = client_socket.recv(1024)print("request data:", request_data)# 构造响应数据response_start_line = "HTTP/1.1 200 OK\r\n"response_headers = "Server: My server\r\n"response_body = "<h1>Python HTTP Test</h1>"response = response_start_line + response_headers + "\r\n" + response_body# 向客户端返回响应数据client_socket.send(bytes(response, "utf-8"))# 关闭客户端连接client_socket.close()except Exception as err:print(err)

然后c语言的http get

err = TCPConnect(1, "192.168.2.142"/*server*/, 8000/*port*/);
    if(err >= 0){
        //fail_cnt = 0;
        portal_conn.sock_fd = err;
        portal_conn.status = portalsConnected;

printf("connect server ok\r\n");
                
                memset(portal_tx_buffer, 0, 113);
                memcpy(portal_tx_buffer, "GET http://www.192.168.2.142/favicon.ico HTTP/1.1\r\n",51);
                memcpy(portal_tx_buffer+51, "Host:www.192.168.2.142\r\n",24);
                memcpy(portal_tx_buffer+75, "Accept:*/*\r\n",12);
                memcpy(portal_tx_buffer+87, "Connection:keep-alive\r\n",24);
          memcpy(portal_tx_buffer+110 ,"\r\n",2);

TCPSend(portal_conn.sock_fd, portal_tx_buffer, 113);
        osDelay(200);
        while(1)
        {
            err = TCPRecv(portal_conn.sock_fd, rec, 256);
        if(err<=0)
        {
            return err;
        }
        
        }

接下来调试了http get获取文件,又是一堆乌龙

首先是看接受文件的长度,

while(i < file_len)
        {
                  if((file_len - i) < 512)
                  {
                    err = TCPRecv(socket_num, rec, (file_len - i));
                    
                  }else{
                    err = TCPRecv(socket_num, rec, 512);      
                  }
            
            if(err<=0)
                {
                break;
                }

USART_Send(USART_PORT2, rec, err);
                //uf_write (&file ,rec, 1000, ttb);
            i += err;
            osDelay(600);
                //uf_lseek(&file, i);
        }

虽然每次设定接受都是512个byte,但是我忽略了真实收到的不见得有这么多,一开始计算i都用+512的方式,在这里卡了三天,直到用串口输出才发现原来是这么回事,而且经常出现接收错误。。。。。接收错误的问题还在分析中。

鹏程万里------HIM开发中遇到的问题相关推荐

  1. 鹏程万里-----python开发中遇到的问题

    1.    self.tabWidget.currentChanged.connect(self.tab_change()) TypeError: argument 1 has unexpected ...

  2. java ee有哪些工具_JavaEE开发中最常用到的技术和工具汇总

    原标题:JavaEE开发中最常用到的技术和工具汇总 今天千锋广州小编给大家来介绍一下关于目前JavaEE开发中最常用到的技术和工具的介绍,下面我们一起来看一下吧. 项目管理:Ant,项目管理事实上的标 ...

  3. 分享.NET开发中经常使用到的代码片段 完全从实际项目中提取出来,也可被反反复复的重复借用...

    几年前,一篇<ASP.NET开发人员经常使用的三十三种代码>非常流行,它总结了一些经常在ASP.NET开发中使用到的代码,直接可以拿来使用.今天重读这篇文章,有感而发,善于总结也是进步,于 ...

  4. 前端开发中的性能那点事

     前端开发中的性能那点事(一)巧用xdebug 前言: 在我们平时的php开发中,一个大的项目经过长时间的积累以后你会发现性能越来越慢,而性能到底消耗在了什么地方,常常是一个令人头疼的问题,funct ...

  5. 开发中新游戏《庞加莱》

    三体题材的游戏,表现三体人在三体星上生活和冒险. 收集水和物器,躲避火焰与巨日,探索遗迹并与巨型生物战斗. 温度会因太阳位置不同而发生变化,进而对环境产生一定影响. 游戏开发中. ---- 2017- ...

  6. Android安卓开发中图片缩放讲解

    安卓开发中应用到图片的处理时候,我们通常会怎么缩放操作呢,来看下面的两种做法: 方法1:按固定比例进行缩放 在开发一些软件,如新闻客户端,很多时候要显示图片的缩略图,由于手机屏幕限制,一般情况下,我们 ...

  7. 038——VUE中组件之WEB开发中组件使用场景与定义组件的方式

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  8. Silverlight开发中遇到的几个小问题

    1,程序发布时遇到错误: "Could not load type 'System.ServiceModel.Activation.HttpModule' from assembly 'Sy ...

  9. Android开发中应避免的重大错误

    by Varun Barad 由Varun Barad Android开发中应避免的重大错误 (Critical mistakes to avoid in Android development) A ...

最新文章

  1. html svg波浪,svg+css3做一个动感的波浪效果实现
  2. python【力扣LeetCode算法题库】169-多数元素
  3. springcloud api-gateway详解
  4. redis install note
  5. 从Java 8启动项目拼图?
  6. arcgis 字段计算器 条件赋值_ArcGIS中属性表的常用操作汇总
  7. arcgis 10.1 导入数据到oracle 发布地图服务
  8. 为什么说劝人报名IT培训班的人,不是坏就是蠢?
  9. 9.4SAS软件入门
  10. 0ffice2003安装2007兼容包不能使用的解法
  11. 如何创建SQL Server Management Studio 18(SSMS)扩展
  12. kindle无缝迁移笔记
  13. 用Python分析豆瓣电影Top250
  14. 做华为外包一年的总结
  15. ACM/ICPC 2018亚洲区预选赛北京赛站网络赛-B:Tomb Raider(模拟+二进制枚举子串)
  16. 富格林金业:贵金属投资的优势体现在哪里
  17. C盘瘦身:QQ文件的清理及Group2文件夹
  18. Matlab 矩阵元素选取方法
  19. 自我管理类书籍推荐以及如何进行自我管理
  20. 天津市铁道职业技术学院计算机专业,天津铁道职业技术学院专业介绍

热门文章

  1. 解构语音交互产品--VUI设计原则
  2. 二叉树的遍历-先序遍历、中序遍历、后序遍历
  3. 究竟什么病毒轻而易举感染了全球8500万部手机?
  4. 《血族-迷失乐园篇》1、2初回限定…
  5. 大学计算机python期末考试_大学计算机程序设计(Python)_章节测验,期末考试,慕课答案查询公众号...
  6. 中国首例!大脑植入电极,高位截瘫病人用意念喝水
  7. H5DU1262GTR-E3C特征
  8. php 上标和下标,css如何显示文字的上标和下标
  9. mysql 幻读的隔离_MySQL的RR隔离级别与幻读问题
  10. [Substrate Recipes翻译]1.21 Tightly- and Loosely-Coupled Pallets