码迷,mamicode.com
首页 > 其他好文 > 详细

简单的Tomcat实现--1.0 JerryMice的启动类

时间:2020-07-29 10:08:09      阅读:54      评论:0      收藏:0      [点我收藏+]

标签:tin   request   print   class   rsize   png   write   out   http   

# 实现JerryMice的启动类

实现这个需求分为以下几点:

1. 定义本地端口号

2. 在本地端口号上开ServerSocket

3. 通过ServerSocket获取Socket

4. 使用socket获取浏览器客户端的请求

5. 给客户端输出请求的结果

实现代码如下:

 1 import cn.hutool.core.util.NetUtil;
 2 
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 import java.io.OutputStream;
 6 import java.net.ServerSocket;
 7 import java.net.Socket;
 8 import java.nio.charset.StandardCharsets;
 9 
10 /**
11  * @author :xiaosong
12  * @description:项目的启动类
13  * @date :2020/7/28 20:41
14  */
15 public class Bootstrap {
16     /**
17     定义服务器的端口号
18      */
19     final static int PORT = 10086;
20     public static void main(String[] args){
21         try {
22             if (!NetUtil.isUsableLocalPort(PORT)){
23                 //查看当前定义的端口是否已经被占用,如果NetUtil.isUsableLocalPort方法返回true表示port定义的端口号可用
24                 System.out.println(PORT + "端口已经被占用, 排查关闭本端口的方法请用\r\nhttps:baidu.com");
25                 return;
26             }
27             // 在port端口上新建serverSocket
28             ServerSocket serverSocket = new ServerSocket(PORT);
29             // 外部使用一个while循环,当处理完一个Socket的链接请求之后,再处理下一个链接请求
30             while (true) {
31                 Socket socket = serverSocket.accept();
32                 // 获取输入流,这个输入流表示的是收到一个浏览器客户端的请求
33                 InputStream inputStream = socket.getInputStream();
34                 //建立1024的缓冲区,请求是有可能超过缓冲区的大小的,所以这种固定缓冲区尺寸的做法是有缺陷的
35                 int bufferSize = 1024;
36                 byte[] buffer = new byte[bufferSize];
37                 //接收浏览器的请求
38                 inputStream.read(buffer);
39                 String requestString = new String(buffer, StandardCharsets.UTF_8);
40                 System.out.println("浏览器的输入信息: \r\n" + requestString);
41                 // 打开输出流,准备给客户端输出信息
42                 OutputStream outputStream = socket.getOutputStream();
43                 String responseHead = "HTTP/1.1 200 OK\r\n" + "Content-Type:text/html\r\n\r\n";
44                 String responseString = "Hello JerryMice";
45                 responseString = responseHead + responseString;
46                 // 以字节数组的形式包装从服务器端给用户端的数据
47                 outputStream.write(responseString.getBytes());
48                 outputStream.flush();
49                 // 关闭socket
50                 socket.close();
51             }
52         }catch (IOException e) {
53             e.printStackTrace();
54         }
55     }
56 }

运行以上代码就可以在浏览器上输入127.0.0.1:10086上查看到输出到网页html上的信息:`Hello JerryMice`

技术图片

 

简单的Tomcat实现--1.0 JerryMice的启动类

标签:tin   request   print   class   rsize   png   write   out   http   

原文地址:https://www.cnblogs.com/xsliu/p/13394418.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!