标签: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