从零手写Tomcat【之】准备步骤,基础Socket通信环境搭建
1.整体包结构图
- 此图是当前文章结束后,整体代码结构,下面有对应的源码下载
2.配置和工具类
- Log.class:日志类,只是写了个格式,模拟日志输出到控制台
- Property.class:读取
server.properties
内的属性- server.properties:配置文件
- web.xml:模拟Tomcat的web.xml,预创建为后续做准备
- Log.class:日志类,只是写了个格式,模拟日志输出到控制台
- Property.class:读取
server.properties
内的属性
- server.properties:配置文件
- web.xml:模拟Tomcat的web.xml,预创建为后续做准备
3.编写服务端入口类
package com.abl.tomcat;
import com.abl.tomcat.util.Log;
import com.abl.tomcat.util.Property;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 程序启动入口
*/
public class Start {
public static void main(String[] args) throws Exception {
ServerSocket server = new ServerSocket(Property.getPort());
Log.info("服务已经启动,端口号:" + Property.getPort());
Socket client = null;
BufferedReader reader = null;
while (true) {
try {
client = server.accept();
reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
String temp = "";
while ((temp = reader.readLine()) != null) {
System.out.println(temp);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (client != null) {
try {
client.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
}
4.编写客户端测试
- 先启动服务端
- 再启动客户端
package com.abl.client;
import com.abl.tomcat.util.Log;
import java.io.PrintWriter;
import java.net.Socket;
public class Client {
public static void main(String[] args) {
// InetAddress address = InetAddress.getByName("127.0.0.1");
// Socket client2 = new Socket("127.0.0.1", 8090,address, 9999);
Socket client1 = null;
PrintWriter writer = null;
try {
client1 = new Socket("127.0.0.1", 8090);
writer = new PrintWriter(client1.getOutputStream());
writer.print("客户端:Hello");
writer.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (writer != null) {
try {
Log.info(writer.toString());
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (client1 != null) {
try {
Log.info(client1.toString());
client1.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
5.本章节源码
《目录:从零手写Tomcat》
《目录:Java设计模式》
《幕》
- 留白 —<老吉>
- ~ 今 ~ ❀ ~ ❀❀❀❀❀❀❀❀❀❀ ❀❀❀❀❀❀❀❀❀❀ ❀❀❀❀❀❀❀