鹏程万里------HIM开发中遇到的问题
首先解决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开发中遇到的问题相关推荐
- 鹏程万里-----python开发中遇到的问题
1. self.tabWidget.currentChanged.connect(self.tab_change()) TypeError: argument 1 has unexpected ...
- java ee有哪些工具_JavaEE开发中最常用到的技术和工具汇总
原标题:JavaEE开发中最常用到的技术和工具汇总 今天千锋广州小编给大家来介绍一下关于目前JavaEE开发中最常用到的技术和工具的介绍,下面我们一起来看一下吧. 项目管理:Ant,项目管理事实上的标 ...
- 分享.NET开发中经常使用到的代码片段 完全从实际项目中提取出来,也可被反反复复的重复借用...
几年前,一篇<ASP.NET开发人员经常使用的三十三种代码>非常流行,它总结了一些经常在ASP.NET开发中使用到的代码,直接可以拿来使用.今天重读这篇文章,有感而发,善于总结也是进步,于 ...
- 前端开发中的性能那点事
前端开发中的性能那点事(一)巧用xdebug 前言: 在我们平时的php开发中,一个大的项目经过长时间的积累以后你会发现性能越来越慢,而性能到底消耗在了什么地方,常常是一个令人头疼的问题,funct ...
- 开发中新游戏《庞加莱》
三体题材的游戏,表现三体人在三体星上生活和冒险. 收集水和物器,躲避火焰与巨日,探索遗迹并与巨型生物战斗. 温度会因太阳位置不同而发生变化,进而对环境产生一定影响. 游戏开发中. ---- 2017- ...
- Android安卓开发中图片缩放讲解
安卓开发中应用到图片的处理时候,我们通常会怎么缩放操作呢,来看下面的两种做法: 方法1:按固定比例进行缩放 在开发一些软件,如新闻客户端,很多时候要显示图片的缩略图,由于手机屏幕限制,一般情况下,我们 ...
- 038——VUE中组件之WEB开发中组件使用场景与定义组件的方式
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...
- Silverlight开发中遇到的几个小问题
1,程序发布时遇到错误: "Could not load type 'System.ServiceModel.Activation.HttpModule' from assembly 'Sy ...
- Android开发中应避免的重大错误
by Varun Barad 由Varun Barad Android开发中应避免的重大错误 (Critical mistakes to avoid in Android development) A ...
最新文章
- html svg波浪,svg+css3做一个动感的波浪效果实现
- python【力扣LeetCode算法题库】169-多数元素
- springcloud api-gateway详解
- redis install note
- 从Java 8启动项目拼图?
- arcgis 字段计算器 条件赋值_ArcGIS中属性表的常用操作汇总
- arcgis 10.1 导入数据到oracle 发布地图服务
- 为什么说劝人报名IT培训班的人,不是坏就是蠢?
- 9.4SAS软件入门
- 0ffice2003安装2007兼容包不能使用的解法
- 如何创建SQL Server Management Studio 18(SSMS)扩展
- kindle无缝迁移笔记
- 用Python分析豆瓣电影Top250
- 做华为外包一年的总结
- ACM/ICPC 2018亚洲区预选赛北京赛站网络赛-B:Tomb Raider(模拟+二进制枚举子串)
- 富格林金业:贵金属投资的优势体现在哪里
- C盘瘦身:QQ文件的清理及Group2文件夹
- Matlab 矩阵元素选取方法
- 自我管理类书籍推荐以及如何进行自我管理
- 天津市铁道职业技术学院计算机专业,天津铁道职业技术学院专业介绍
热门文章
- 解构语音交互产品--VUI设计原则
- 二叉树的遍历-先序遍历、中序遍历、后序遍历
- 究竟什么病毒轻而易举感染了全球8500万部手机?
- 《血族-迷失乐园篇》1、2初回限定…
- 大学计算机python期末考试_大学计算机程序设计(Python)_章节测验,期末考试,慕课答案查询公众号...
- 中国首例!大脑植入电极,高位截瘫病人用意念喝水
- H5DU1262GTR-E3C特征
- php 上标和下标,css如何显示文字的上标和下标
- mysql 幻读的隔离_MySQL的RR隔离级别与幻读问题
- [Substrate Recipes翻译]1.21 Tightly- and Loosely-Coupled Pallets