Java Socket Programming
大约 5 分钟
Java Socket Programming
套接字编程是进程之间通信的重要依赖。本章节将使用Java原生实现套接字通信程序。
本文档清晰的讲述了Silver Spork 这一程序的思路和开发过程。
- Document: https://guomaimang.github.io/note/cs/cn/java-socket-programming
- Demo: http://cn2322.hanjiaming.com.cn:8082
- Github: https://github.com/guomaimang/Silver-Spork
Background
Requirement
使用Java, 开发一个套接字程序 Silver Spork, 设计一个轻量的HTTP Server, 以实现使用HTTP协议的WEB服务, 功能类似Nginx。
With
Environment
开发环境
- Macos
- Java 17
- Intelj idea 2021
测试环境
- Postman
- Chrome dev100
- IPv4 + IPv6
Organization
File
- Public: Storing static website pages
- src: Storing Java source code
- HttpServer.java: Program Ontology, also Launcher
- class->clock: Executable, timing stop process
- class->worker: Handler for single socket
- Request.Java: Parsing the incoming Request message
- Response.Java: Sending messages based on Response
- Logger.java: Take down the log
- HttpServer.java: Program Ontology, also Launcher
Configurable global variables
- serverRoot: Specifies the location where the static site files are stored, i.e. the root directory of the site.
- Default is "public"
- The site owner can place files in this directory
- port: Server socket port
- Default is 8080
- logger: set the location of log file
- Default is "log.txt"
Advantage
- 必要的日志记录。
- 使用原生Java,从socket开始开发。没有使用任何现有的httpServer库。
- 可拓展性强。使用Java进行模块化开发。有利于功能拓展和二次开发。
- 开发规范。
- 注释清晰。
- 例如使用Java beans设置变量。
- 没有无用的接口。
- 没有使用危险函数/方法。
Reference
https://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html
https://blog.csdn.net/allway2/article/details/120255402