Skip to content
This repository was archived by the owner on Dec 24, 2023. It is now read-only.

Commit 6cef595

Browse files
committed
写了点README.md
1 parent b2970aa commit 6cef595

2 files changed

Lines changed: 73 additions & 10 deletions

File tree

‎README.md‎

Lines changed: 73 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -42,32 +42,99 @@
4242

4343
## 1 请求报文、响应报文的实现
4444

45-
**见Message包里的Request类和Response类**
45+
![imag](message%20structure.png)
46+
47+
**报文类对报文数据进行封装,对成员变量提供get(),set()方法,并提供静态方法去创建或解析报文**
48+
```java
49+
public static Request parseRequest(InputStream reqStream) throws IOException;
50+
public static Response buildResponse(Request request);
51+
```
52+
**实现send()方法,接受一个OutputStream的参数,用于将报文序列化并发送
53+
```java
54+
public void send(OutputStream out) throws IOException;
55+
```
4656

4757
## 2 服务器
4858

49-
**HttpServer类通过静态方法start()实例化一个ServerSocket监听指定端口(default:8080)
50-
,每当收到一个连接请求,将该次请求封装成一个HttpTask对象,实现Runnable接口多线程,以支持同时有多个http请求**
59+
**HttpServer类通过静态方法start()实例化一个ServerSocket监听指定端口(default:8080)**
60+
**,每当收到一个连接请求,将该次请求封装成一个HttpRequestHandler对象,实现Runnable接口多线程,以支持同时有多个http请求**
61+
62+
5163

5264
## 3 客户端
5365

5466
### 1 GET方法用于获取服务器目录下的资源,url为相对路径
5567

68+
```java
69+
public void get(String url);
70+
```
71+
5672
### 2 POST方法用于向服务器提交数据,在本项目中仅实现提交账号密码,与注册登陆有关
5773

74+
```java
75+
public void post(String url, String user_name, String password);
76+
```
77+
5878
## 4 状态码
5979

6080
![image](status_code.png)
6181

82+
**详见JsonReader类**
83+
6284
## 5 资源管理
6385

64-
**sever的资源在HttpSever/webRoot目录下,各资源状态用json文件保存**
65-
**client的缓存在HttpClient/cache下,也用json文件保存状态**
86+
**server的资源在resources/webRoot目录下,各资源状态用json文件保存,用javaBean类与json文件互转来管理资源**
87+
88+
>运用了alibaba的fastjson,hutool等第三方工具包,maven依赖关系如下
89+
90+
```java
91+
<dependency>
92+
<groupId>com.alibaba</groupId>
93+
<artifactId>fastjson</artifactId>
94+
<version>2.0.20</version>
95+
</dependency>
96+
<dependency>
97+
<groupId>cn.hutool</groupId>
98+
<artifactId>hutool-all</artifactId>
99+
<version>5.8.10</version>
100+
</dependency>
101+
```
66102

67103
## 6 长连接
68104

105+
### 1 HttpTask类里设置一个最大时间跨度,超过时间未请求,则服务器关闭socket
106+
107+
```java
108+
private static final int MAX_GAP=30000;//不发消息的最大时间跨度
109+
```
110+
111+
### 2 实例化HttpClient对象时在构造函数中建立socket连接,每次get()或post()时进行异常检测,若server端的socket已关闭,则重新建立socket连接
112+
113+
```java
114+
public void get(String url) {
115+
try {
116+
//进行get()操作
117+
} catch (IOException ex) {
118+
try {
119+
client = new Socket(hostname, port);
120+
System.out.println("超时,重新建立连接!");
121+
System.out.println("连接到主机:" + hostname + " ,端口号:" + port);
122+
System.out.println("远程主机地址:" + client.getRemoteSocketAddress());
123+
get(url);
124+
} catch (Exception e) {
125+
e.printStackTrace();
126+
}
127+
}
128+
}
129+
```
69130
## 7 MIME类型
70131

132+
**MIME中存储一张表,通过 getMimeType() 提供文件扩展名到报文头部 "Content-Type" 的映射**
133+
134+
```java
135+
public String getMimeType(String Uri);
136+
```
137+
71138
## 8 登陆的实现
72139

73140
---
@@ -76,11 +143,7 @@
76143

77144
**https://www.cnblogs.com/chris-cp/p/5082514.html**
78145
**https://blog.csdn.net/YaoLang1995/article/details/89316912**
79-
80-
*
81-
82-
*https://blog.csdn.net/linhao_obj/article/details/120767149?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-2-120767149-blog-89316912.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-2-120767149-blog-89316912.pc_relevant_3mothn_strategy_recovery&utm_relevant_index=3
83-
**
146+
**https://blog.csdn.net/linhao_obj/article/details/120767149?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-2-120767149-blog-89316912.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-2-120767149-blog-89316912.pc_relevant_3mothn_strategy_recovery&utm_relevant_index=3**
84147
**https://blog.csdn.net/weixin_42316952/article/details/114081588**
85148
**https://developer.mozilla.org/zh-CN/docs/Web/HTTP**
86149
**https://zhuanlan.zhihu.com/p/388270712**

‎message structure.png‎

88.5 KB
Loading

0 commit comments

Comments
 (0)