许多HTTP通讯是由一个用户代理初始化的并且包括一个申请在源服务器上资源的请求。最简单的情况可能是在用户代理(UA)和源服务器(O)之间通过一个单独的连接来完成
首先,简单介绍基于HTTP协议的客户/服务器模式的信息交换过程,它分四个过程,建立连接、发送请求信息、发送响应信息、关闭连接。
在WWW中,“客户”与“服务器”是一个相对的概念,只存在于一个特定的连接期间,即在某个连接中的客户在另一个连接中可能作为服务器。WWW服务器运行时,一直在TCP 80端口(WWW的缺省端口)监听,等待连接的出现。
#define HTTP_PORT80
void HttpEntry(void *arg)
{
extern void Handler_HTTP(struct netconn *pstConn)
struct netconn *pstConn, *pstNewConn
pstConn = netconn_new(NETCONN_TCP)
netconn_bind(pstConn, NULL, HTTP_PORT)
netconn_listen(pstConn)
while(TRUE)
{
pstNewConn = netconn_accept(pstConn)
if(pstNewConn != NULL)
{
Handler_HTTP(pstNewConn)
while(netconn_delete(pstNewConn) != ERR_OK)
OSTimeDlyHMSM(0, 0, 1, 0)
}
}
}
1.建立连接
连接的建立是通过申请套接字(Socket)实现的。客户打开一个套接字并把它约束在一个端口上,如果成功,就相当于建立了一个虚拟文件。以后就可以在该虚拟文件上写数据并通过网络向外传送。
2.发送请求
打开一个连接后,客户机把请求消息送到服务器的停留端口上,完成提出请求动作。
HTTP/1.0请求消息的格式为:
请求消息=请求行(通用信息|请求头|实体头)CRLF[实体内容]
请求 行=方法 请求URL HTTP版本号 CRLF
方法=GET|HEAD|POST|扩展方法
U R L=协议名称+宿主名+目录与文件名
请求行中的方法描述指定资源中应该执行的动作,常用的方法有GET、HEAD和POST。不同的请求对象对应GET的结果是不同的,对应关系如下:
对象GET的结果
文件文件的内容
程序该程序的执行结果
数据库查询 查询结果
HEAD——要求服务器查找某对象的元信息,而不是对象本身。
POST——从客户机向服务器传送数据,在要求服务器和CGI做进一步处理时会用到POST方法。POST主要用于发送HTML文本中FORM的内容,让CGI程序处理。
下面为我测试的时候,通过串口打出来的信息:
GE T / H T T P / 1 . 1
A c c e p t : i m a g e / g i f , i m a g e / x - x b i t m a p , i m a g e / j p e g , i m a g e / p j p e g , a p p l i c a t i o n / x - s h o c k w a v e - f l a s h , a p p l i c a t i o n / v n d . m s - e x c e l , a p p l i c a t i o n / v n d . m s - p o w e r p o i n t , a p p l i c a t i o n / m s w o r d , * / *
A c c e p t - L a n g u a g e : z h - c n
A c c e p t - E n c o d i n g : g z i p , d e f l a t e
U s e r - A g e n t : M o z i l l a / 4 . 0 ( c o m p a t i b l e M S I E 6 . 0 W i n d o w s N T 5 . 1 S V 1 M a x t h o n . N E T C L R 2 . 0 . 5 0 7 2 7 )
H o s t : 1 9 2 . 1 6 8 . 1 . 2
C o n n e c t i o n : K e e p - A l i v e
头信息又称为元信息,即信息的信息,利用元信息可以实现有条件的请求或应答。
请求头——告诉服务器怎样解释本次请求,主要包括用户可以接受的数据类型、压缩方法和语言等。
实体头——实体信息类型、长度、压缩方法、最后一次修改时间、数据有效期等。
实体——请求或应答对象本身。
3.发送响应
服务器在处理完客户的请求之后,要向客户机发送响应消息。
HTTP/1.0的响应消息格式如下:
响应消息=状态行(通用信息头|响应头|实体头) CRLF 〔实体内容〕
状态行=HTTP版本号 状态码 原因叙述
状态码表示响应类型
1××保留
2××表示请求成功地接收
3××为完成请求客户需进一步细化请求
4××客户错误
5××服务器错误
响应头的信息包括:服务程序名,通知客户请求的URL需要认证,请求的资源何时能使用。
/*
* By Small.Box at 2006.10.18
*
* RFC2616
* 1xx: Informational - Request received, continuing process
* 2xx: Success - The action was successfully received,understood, and accepted
* 3xx: Redirection - Further action must be taken in order to complete the request
* 4xx: Client Error - The request contains bad syntax or cannot be fulfilled
* 5xx: Server Error - The server failed to fulfill an apparently valid request
*
* Status-Code =
*
* 其中最常见的几种错误和正确状态代码有
*
* "100" Continue
* "200" OK
* "404" Not Found
*
*/
#define HTTP_HTML_HEADER "HTTP/1.1 200 OK\r\nContent-type: text/html\r\n\r\n"
netconn_write(httpConn, HTTP_HTML_HEADER, strlenExt(HTTP_HTML_HEADER), NETCONN_COPY)
4.关闭连接
客户和服务器双方都可以通过关闭套接字来结束TCP/IP对话.
下面是通过IE浏览器点击WEB页面后,传给ARM的数据值。
PO S T / h e S e t N e t C F G P a r a m H T T P / 1 . 1
A c c e p t : i m a g e / g i f , i m a g e / x - x b i t m a p , i m a g e / j p e g , i m a g e / p j p e g , a p p l i c a t i o n / x - s h o c k w a v e - f l a s h , a p p l i c a t i o n / v n d . m s - e x c e l , a p p l i c a t i o n / v n d . m s - p o w e r p o i n t , a p p l i c a t i o n / m s w o r d , * / *
R e f e r e r : h t t p : / / 1 9 2 . 1 6 8 . 1 . 2 /
A c c e p t - L a n g u a g e : z h - c n
C o n t e n t - T y p e : a p p l i c a t i o n / x - w w w - f o r m - u r l e n c o d e d
A c c e p t - E n c o d i n g : g z i p , d e f l a t e
U s e r - A g e n t : M o z i l l a / 4 . 0 ( c o m p a t i b l e M S I E 6 . 0 W i n d o w s N T 5 . 1 S V 1 M a x t h o n . N E T C L R 2 . 0 . 5 0 7 2 7 )
H o s t : 1 9 2 . 1 6 8 . 1 . 2
C o n t e n t - L e n g t h : 4 6
C o n n e c t i o n : K e e p - A l i v e
C a c h e - C o n t r o l : n o - c a c h e
i p = 1 9 2 . 1 6 8 . 1 . 3 &n m = 2 5 5 . 2 5 5 . 2 5 5 . 0 &g w = 1 9 2 . 1 6 8 . 1 . 1
以上数据,也是通过ARM串口截获出来的。下面我将给出IE-WEB页面的源程序,WEB页面的源代码是用HTML语言和JavaScript语言写的。
语言没有好坏 只是各自有各自的特点、Java
Java编程语言(第三版)---Java四大名著----James Gosling(Java之父)
Java编程思想(第2版)----Java四大名著----Bruce Eckel
Java编程思想(第3版)----Java四大名著----------------Bruce Eckel
JAVA 2核心技术 卷I:基础知识(原书第7版)---Java四大名著-----Cay Horstmann
JAVA 2核心技术 卷II:高级特性(原书第7版)----Java四大名著-----Cay Horstmann
Effective Java中文版------Java四大名著--------Joshua Bloch
精通Struts:基于MVC的Java Web设计与开发---孙卫琴
精通Hibernate:Java对象持久化技术详解---孙卫琴
Tomcat与Java Web开发技术详解------------孙卫琴
Java与模式------------------------------阎宏
2、c#
C#程序设计-------Charles Petzold“windows编程泰山北斗”---C#语言“倚天屠龙双剑”
C# Primer中文版--------Stanley B.Lippman---C#语言“倚天屠龙双剑”
.NET框架程序设计(修订版)--------Jeffrey Richter“windows编程泰山北斗”---.NET平台四大天王
c#Windows程序设计----------Charles Petzold“windows编程泰山北斗”------.NET平台四大天王
.NET程序设计技术内幕-------------Jeff Prosise---.NET平台四大天王
.NET本质论--第1卷:公共语言运行库(中文版)--------Chris Sells---.NET平台四大天王
3、C++
C++程序设计语言(特别版)---c++八大金刚----Bjarne Stroustrup“C++之父”
C++ Primer (第3版)中文版----c++八大金刚---Stanley B.Lippman
C++ Primer (第4版)中文版----c++八大金刚---Stanley B.Lippman
C++标准程序库—自修教程与参考手册--c++八大金刚--Nicolai M.Josuttis
C++语言的设计和演化-----c++八大金刚----Bjarne Stroustrup“C++之父”
深度探索C++对象模型---c++八大金刚----Stanley B.Lippman
Essential C++中文版---c++八大金刚---Stanley B.Lippman
Effective C++中文版 2nd Edition-----c++八大金刚------Scott Meyers
More Effective C++中文版----c++八大金刚------Scott Meyers
C++编程思想(第2版) 第1卷:标准C++导引--------Bruce Eckel
C++编程思想(第2版)第2卷:实用编程技术 --------Bruce Eckel
C++程序设计--------------------------谭浩强
C++ 程序设计教程(第2版)--------------钱能
C++ Primer Plus(第五版)中文版---Stephen Prata
广博如四库全书The c++ programming language、c++ Primer
深奥如山重水复Inside the c++ object model
程序库大全The c++ standard libray
工程经验之积累Effective c++、More Effective c++、Exceptional c++
c++八大金刚:
1、Essentital c++---lippman---C++之父,旁枝暂略,主攻核心,轻薄短小,初学者
2、The c++ programming language----C++之父,技术权威,用词深峻,思想深远,c++百科全书代表,圣经。
3、c++ Primer----lippman---纵横书市十数年,c++最佳教本,c++百科全书代表。
4、Inside the c++ object model-----lippman----揭示c++底层,非常好,非常难。
5、Effective c++-----通过50个编程实例,展示专家经验,行文有趣,深处浅出。
6、More Effective c++----通过35个编程实例,展示专家经验,行文有趣,深处浅出。
7、The c++ standard libray---c++标准库的百科全书。
8、设计模式:可复用面向对象软件的基础------good!
4、c
C程序设计语言(第2版·新版)---C语言“倚天屠龙双剑”---Brian W.Kernighan“C语言之父”
C Primer Plus中文版(第五版)--------C语言“倚天屠龙双剑”---Stephen Prata
C程序设计(第三版)---------------------------谭浩强
C语言大全(第四版)---------------------------HERBERT SCHILDT
C语言接口与实现:创建可重用软件的技术-------------DAVID R.HANSON
C语言参考手册(原书第5版)--------------------------Samuel P.Harbison
C程序设计教程---------------------------------H.M.Deitel/P.J.Deitel
C陷阱与缺陷-----------------------------------Andrew Koenig
5、VB
Visual Basic .NET技术内幕-----VB编程三剑客-----------Francesco Balena“vb首席大师”
Windows程序设计-Visual Basic.NET语言描述--VB编程三剑客-----Charles Petzold“windows编程泰山北斗”---
.NET框架程序设计:Visual Basic.NET语言描述--VB编程三剑客--Jeffrey Richter“windows编程泰山北斗”---,Francesco Balena“vb首席大师”
Visual Basic 6编程技术大全------------------------Francesco Balena“vb首席大师”
Visual Basic.NET 从入门到精通-------------------------Petroutsos,E.
高级VISUAL BASIC编程-----------------------------------MATTHEW CURLAND
6、Delphi
Inside VCL(深入核心——VCL架构剖析)----------李维
Delphi 7高效数据库程序设计--------------李维
面向对象开发实践之路(Delphi版)----------李维
7、VC
Windows 程序设计(第5版)-----Charles Petzold“windows编程泰山北斗”---
Windows核心编程----------Jeffrey Richter“windows编程泰山北斗”---
Windows高级编程指南---------Jeffrey Richter“windows编程泰山北斗”---
深入浅出MFC(第二版)-----“MFC四大天王”-------侯捷
MFC Windows程序设计(第2版)---MFC四大天王”---------Jeff Prosise
Visual C++ 技术内幕(第4版)--MFC四大天王”--------David Kruglinski
深入解析MFC-------------MFC四大天王”-----------George Shepherd
Visual C++.NET 技术内幕(第6版)-MFC四大天王”------------David Kruglinski
8、vf
Visual Foxpro程序设计参考手册-------------------张洪举
专家门诊——Visual FoxPro开发答疑160问-------------------张洪举
Visual FoxPro 6.0/9.0解决方案与范例大全-------------------张洪举
Visual FoxPro软件开发模式与应用案例-------------------张洪举
9、黑客
应用密码学(协议算法与C源程序-----------Bruce Schneier
网络信息安全的真相-----------Bruce Schneier
黑客大曝光:网络安全机密与解决方案(第5版)--------STUART MCCLURE
软件加密技术内幕------------看雪学院
加密与解密——软件保护技术与完全解决方案------------看雪学院
加密与解密(第二版)--------段钢
10、汇编
Intel微处理器结构、编程与接口(第六版)---------Barry B. Brey
80*86、奔腾机汇编语言程序设计---------Barry B. Brey
Windows环境下32位汇编语言程序设计(第2版)-----------罗云彬
IBM-PC汇编语言程序设计(第2版) 本书是国内优秀教材--------沈美明 温冬婵
IBM PC汇编语言程序设计(第五版) 这本书籍是国外优秀教材-------PETER ABEL著,沈美明 温冬蝉译
11、驱动开发
Windows WDM设备驱动程序开发指南------------------------------------ Chris Cant
Windows 2000/XP WDM设备驱动程序开发(第2版)--------------------------武安河
WINDOWS 2000/XP WDM设备驱动程序开发-------------------------------- 武安河
12、网络
计算机网络第四版中文版----网络编程三剑客--------------Andrew S.Tanenbaum
TCP/IP详解3卷本--------------------Richard Stevens----网络编程三剑客
UNIX网络编程2卷本--------------------Richard Stevens----网络编程三剑客
用TCP/IP进行网际互联-----------Douglas E. Comer
高级TCP/IP编程-------------------Jon C. Snader
C++网络编程-----------------------Douglas Schmidt
UNIX环境高级编程(第2版)--------------------Richard Stevens
13、算法
计算机程序设计艺术-------Donald.E.Knuth----------算法“倚天屠龙”双剑
算法导论-----------------Thomas H. Cormen--------算法“倚天屠龙”双剑
离散数学及其应用----------Kenneth H.Rosen
具体数学—计算机科学基础--------Donald.E.Knuth
14、图形编程
Windows 图形编程----------------FENG YUAN --图形编程界的Charles Petzold之书
15、数据结构
数据结构 C++语言描述》58.00(Data Structures C++) William Ford,William Topp 刘卫东 沈官林
数据结构算法与应用-C++语言描述》49.00Sartej Sahni 汪诗林 孙晓东等机械工业出版社
16、软件工程
设计模式--可复用面向对象软件的基础
重构—改善既有代码的设计
17、 *** 作系统
深入理解计算机系统(修订版)-------RANDAL E.BRYANT
18、Unix
UNIX 网络编程 卷I 套接字联网API(英文版 第三版
UNIX 编程艺术
UNIX环境高级编程(英文影印第2版-----UNIX编程“圣经
UNIX环境高级编程(英文影印版)(第2版)
99-UNIX环境高级编程(第2版)
UNIX环境高级编程(第2版)---UNIX编程“圣经
UNIX网络编程 第1卷:套接口API(第3版)
UNIX网络编程卷2:进程间通信(第2版)(英文影印版)
UNIX 网络编程(第二版)第2卷:进程间通信
UNIX编程环境
UNIX 网络编程 卷I 套接字联网API(英文版 第三版
UNIX系统编程
UNIX环境高级编程
UNIX环境高级编程(英文影印版
88-LINUX内核分析及编程
UNIX 网络编程 卷I 套接字联网API(英文版 第三版)
UNIX网络编程 第1卷:套接口API(第3版)
UNIX 网络编程(第二版)第2卷:进程间通信
UNIX网络编程卷2:进程间通信(第2版)(英文影印版)
UNIX 网络编程(第2版)第1卷:套接口API和X/Open 传输接口API
UNIX网络编程(卷1):连网的APLS:套接字与XTI(第二版)(英文影印版)
UNIX环境高级编程
UNIX 环境高级编程(英文版)
UNIX环境高级编程(第2版)
Unix技术手册
19、Linux
Linux内核设计与实现
Linux内核完全注释
LINUX内核分析及编程
GNU/Linux 编程指南(第二版)
Linux设备驱动程序(第三版)
嵌入式设计及Linux驱动开发指南——基于ARM 9处理器
Linux设备驱动程序 第三版(英文影印版)
Linux内核设计与实现(第2版)
Linux内核设计与实现(英文影印版)(第2版)
linux技术手册
20、游戏编程
Windows游戏编程大师技巧(第二版
游戏之旅--我的编程感悟
OpenGL超级宝典:第三版
OpenGL编程指南(第四版)
Java 游戏高级编程
J2ME手机游戏编程入门
游戏之旅——我的编程感悟
游戏开发中的人工智能(英文影印版)
3D游戏:卷2 动画与高级实时渲染技术
面向对象的游戏开发
Java 游戏高级编程
3D游戏编程大师技巧
游戏编程精粹
面向对象的游戏开发
3D游戏 卷1:实时渲染与软件技术
3D游戏:卷2 动画与高级实时渲染技…
J2ME手机游戏编程入门
Direct3D游戏编程入门教程(第二版…
21、移动开发
Windows Mobile手机应用开发
SYMBIAN OS C++手机应用开发
68-Windows Mobile手机应用开发--傅曦 齐宇 徐骏
48-SYMBIAN OS C++手机应用开发 (第2卷)------------------RICHARD HARRISON著,周良忠 王伯欣译
68-SYMBIAN OS C++手机应用开发---------------RICHARD HARRISON著,周良忠译
Windows CE.net内核定制及应用程序开发---------周毓林 宁杨 陆贵强 付林林
嵌入式系统Windows CE 开发技巧与实例--傅曦
Palm OS编程实践---绝版
22、单片机
单片机轻松入门----------------------------------周坚(平凡老师)
单片机典型模块设计实例导航-----------------------求是科技
例说8051----------------------------------------张义和 陈敌北
KEIL CX51 V7.0单片机高级语言编程与ΜVISION2应用实践-----徐爱钧
单片机应用程序设计技术(修订版)--------------------周航慈
8051单片机实践与应用-------------------------------吴金戎
MCS-51系列单片机实用接口技术---------------------李华
23、串并口通讯
Visual C++/Turbo C串口通信编程实践------------------龚建伟
VISUAL BASIC与RS-232串行通信控制(最新版)----------范逸之
24、电子
无线电识图与电路故障分析轻松入门(第二版) -------------------胡斌
无线电元器件检测与修理技术轻松入门(第二版) -------------------胡斌
图表细说电子技术识图-------------------胡斌
图表细说电子元器件-------------------胡斌
图表细说元器件及实用电路-------------------胡斌
回答者:qqpenghan - 初入江湖 二级 5-25 11:53
五、汇编书籍推荐
http://www.ithao123.com/assemble/0013.html
帖一:温东蝉等《ibm pc汇编语言程序设计》 清华大学出版社;
《80x86汇编语言程序设计》杨季文
帖二:以下是本人觉得不错的书:
<80386/80486系统编程实践>
淅江大学 吕晓庆
说明:本书算得上是最系统讲述PM编程的书,附有一个完整的PM内核例子(代码有误,不能运行)。对学习异常、任务机制相当有帮助。
适合范围:中高级PM学习(本人强烈推荐)
<80X86汇编语言程序设计>
清华大学 杨季和
说明:本书后半部讲述PM编程,不够系统,但所有例子均可运行。
适合范围:中级PM学习(本人强烈推荐)
<微型计算机从8086到80386>
淅江大学 周明德
说明:关于PM理论不错,但缺少实践。
适合范围:中级PM学习
INTEL的手册三部曲(英文版)
说明:一句话:官方资料!
适合范围:中高级IA架构研究
下载地址:http://www.intel.com/design/pentium4/manuals/index_new.htm
帖三:《汇编语言》
作者:王爽
说明:由易到难,前后关联性强,与以往的汇编语言教材的编辑顺序有很大不同。
适合范围:入门
帖四:《Intel汇编语言程序设计(第四版)》 非常好,以前想学汇编,可一直学不下去,现在看这本书,半个月看了差不多一半,而且感觉都能看懂,值得推荐。
罗云彬的《Win32下的汇编语言程序设计》 讲Win32汇编的,有点类似用C写Windows程序,不过书中大篇幅讲述了 PE 结构,讲得非常详细,还有相应的例子。值得一看。
ARM、80x86等汇编语言的学习经验、学习方法和学习网站
http://hi.baidu.com/xiangyu138/blog/item/94c3b80166b73502738da50e.html
ARM、NiosII技术网站
http://www.ithao123.com/redianjishu/arm.html
1、简明x86汇编语言教程(1)-汇编语言简介
2、简明x86汇编语言教程(2)-认识处理器
3、简明x86汇编语言教程(3)-使用寄存器
4、简明x86汇编语言教程(4)- *** 作内存
5、简明x86汇编语言教程(5)-串 *** 作
6、简明x86汇编语言教程(6)-利用子程序与中断
7、简明x86汇编语言教程(7)-编译优化
8、Win32Asm及其编程工具和资源的介绍
9、MASM宏使用总结
10、ARM中C和汇编混合编程及示例
11、VC7中汇编和C++混合的初步心得
12、Linux下的汇编程序设计
13、如何学习汇编语言
14、汇编语言超浓缩教程
arm开发平台很多;它包括以下:*软件开发包:
(1)有 *** 作系统的,比如linux,包括内核,驱动,bootloader,应用程序,gcc编译器。一般板子商也会提供wince等等其他os,不过学习的话一种就足够了。
(2)无 *** 作系统,一般都是基于ads编译器的,业内叫裸奔代码。
*硬件方面:
板子的原理图,各个组件的电路图,型号,等等吧,还有调试的小板
*你自己需要购买的:
arm调试器,ice或者jlink,国内大都用盗版。很便宜。
题外话:板子供应商一般分为两种:ic原厂,和专门做板子的提供商。ic原厂类似于三星公司,板子提供商类似于周立功之类的。ic原厂的技术实力雄厚有保证,但是大部分ic公司出的板子都是针对有项目的大客户,初学者很少有人理会的,不过要看运气了。开发板供应商,实力一般,特别是三星的开发板,国内乱得很,代码抄来抄去。有的甚至无支持。
还是那句话,买板子主要看技术支持。一方面体现了该厂家的技术实力。不要光听别人说技术支持怎么怎么的好,其实你买了后大部分支持都不咋地的。
http://mcuos.com/forum-105-1.html
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)