http是一种协议(超文本传输协议),允许web服务器和浏览器通过Internet来发送和接受数据,是一种请求/响应协议。http底层使用TCP来进行通信。目前,http已经迭代到了2.x版本,从最初的0.9、1.0、1.1到现在的2.x,每个迭代都加了很多功能。
在http中,始终都是客户端发起一个请求,服务器接受到请求之后,然后处理逻辑,处理完成之后再发送响应数据,客户端收到响应数据,然后请求结束。在这个过程中,客户端和服务器都可以对建立的连接进行中断操作。比如可以通过浏览器的停止按钮。
一个http协议的请求包含三部分:
举个例子
类似于http协议的请求,响应也包含三个部分。
举个例子
第一行,HTTP/1.1 200 OK
表示协议、状态和状态描述。
之后表示响应头部。
响应头部和主体内容之间使用空行来分离。
Socket
这儿通过socket.getOutputStream()
来发送数据,使用socket.getInputstream()
来读取数据。
ServerSocket
HttpServer
我们这儿还是看一个例子。
HttpServer表示一个服务器端入口,提供了一个main方法,并一直在8080端口等待,直到客户端建立一个连接。这时,服务器通过生成一个Socket来对此连接进行处理。
Request对象主要完成几件事情
- 解析请求数据
- 解析uri(请求数据第一行)
Response主要是向客户端发送文件内容(如果请求的uri指向的文件存在)。
- 海报