阅读本文需要读者至少有C/C++
网络编程基础, 并且了解基本的Socket API
是如何使用的.
同时需要读者至少使用过cfadmin
框架、并且能熟练使用内置库来完成简单的业务逻辑编写.
对本文有兴趣的同学也可以从官网与文档来了解更多关于框架的更多使用方法.
数据的传输
上一章节笔者与大家一起学会了如何建立两端连接, 本章节开始我们将学会如何实现最简单的HTTP
交互协议.
这个作为大家最熟悉的协议, 它的全称是: Hyper Text Transfer Protocol
- 超文本传输协议.
它构建并运行在传输层(TCP
)之上属于应用层协议, 同时请求->响应的模型让Socket
工作在半双工模式下.
HTTP
经过发展从最初的HTTP/0.9
版本到现在成熟的HTTP/2
, 更有已经在使用的HTTP/3
非完善的标准规范.
由于篇幅原因, 笔者仅介绍HTTP/1.1
的子集实现与测试. 对于HTTP
协议的发展历程可以在阅读本文后自行查阅.
协议模型介绍
HTTP
协议的交互协议实现是明文(可见字符)的, 也正是由于可读性较好开发者可以很轻松就能学会.
客户端的请求协议组成:
{
METHOD}空格{
URI}空格HTTP/{
VERSION}\r\n
{
NAME}:空格{
VALUE}\r\n
{
NAME}:空格{
VALUE}\r\n
{
NAME}:空格{
VALUE}\r\n
\r\n\r\n
{
BODY}
服务端的响应协议组成:
HTTP/{
VERSION}空格{
CODE}空格{
MESSAGE}\r\n
{
NAME}:空格{
VALUE}\r\n
{
NAME}:空格{
VALUE}\r\n
{
NAME}:空格{
VALUE}\r\n
\r\n\r\n
{
BODY}
下面为大家简单解释一下协议:
-
METHOD
- 表示请求使用的方法, 大家打开网页最常见到的是GET
与POST
. -
URL