Skip to content

594mzy/HttpProject

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 

Repository files navigation

💻Java Socket HTTP 客户端 / 服务器项目

基于 Java 原生 Socket API 开发的轻量级 HTTP 客户端与服务器,完全不依赖任何第三方框架,纯原生实现 HTTP 协议基础功能及用户认证场景。

项目介绍

本项目旨在通过 Java 原生 Socket API 构建完整的 HTTP 通信体系,包含客户端与服务器端实现。项目遵循 HTTP/1.1 协议规范,支持基础请求响应处理、长连接机制及用户注册登录功能,适合用于学习 HTTP 协议原理及 Socket 网络编程实践。

技术栈

  • 编程语言:Java 8+
  • 核心技术:Java Socket API(BIO 模型)、HTTP/1.1 协议
  • 开发工具:IntelliJ IDEA、Git、Postman(接口测试)
  • 代码托管:GitHub

功能清单

1. 服务器端功能

  1. 支持 HTTP 方法:GET、POST
  2. 状态码支持:200(成功)、301(永久重定向)、302(临时重定向)、304(未修改)、404(资源不存在)、405(方法不允许)、500(服务器内部错误)
  3. 实现 HTTP 长连接(Keep-Alive)机制
  4. MIME 类型支持:
    • 文本类型:text/html、text/plain
    • 非文本类型:image/png
  5. 业务功能:
    • 用户注册接口(POST /user/register)
    • 用户登录接口(POST /user/login)
    • 内存级数据存储(无需持久化)
  6. 静态资源服务:支持访问 static 目录下的 HTML、文本、图片等资源

2. 客户端功能

  1. 支持发送 GET 和 POST 请求
  2. 完整解析并呈现服务器响应(响应头 + 响应体)
  3. 状态码处理:自动处理 301、302 重定向,支持 304 缓存判断
  4. 长连接支持:复用 TCP 连接减少握手开销
  5. 连接池管理:维护多个主机的连接池,提升请求效率

快速开始

1. 环境准备

  • JDK 8 及以上
  • Git(代码拉取)
  • 任意 Java 开发工具(推荐 IntelliJ IDEA)

2. 代码拉取

git clone https://github.com/594mzy/HttpProject.git
cd HttpProject

3. 项目结构

plaintext

HttpProject
├─ src
│  ├─ com.http.common
│  │  ├─ Request.java
│  │  ├─ Response.java
│  │  ├─ ParamParser.java
│  │  ├─ UrlParser.java
│  │  ├─ BIOTransport.java
│  │  ├─ SocketPool.java
│  │  └─ MimeUtil.java
│  ├─ com.http.server
│  │  ├─ HttpServer.java
│  │  ├─ ClientHandler.java
│  │  ├─ RequestParser.java
│  │  ├─ Router.java
│  │  ├─ ResourceHandler.java
│  │  ├─ ResponseWriter.java
│  │  └─ UserHandler.java
│  ├─ com.http.client
│  │  ├─ HttpClient.java
│  │  ├─ ResponseParser.java
│  │  └─ RedirectHandler.java
│  ├─ com.http.test
│  └─ static
│     ├─ index.html
│     ├─ test.txt
│     └─ test.png
└─ README.md

4. 运行说明

  1. 启动服务器:运行 com.http.server.HttpServer 类的 main 方法(默认端口 8080)
  2. 客户端测试:

开发团队

  • 项目创建者:594mzy(缪周洋)
  • 协作开发者:myx,zyl,shy(缪宇轩,朱雨乐,盛浩宇)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors