模拟Tomcat

这里是引用B站一位UP主的代码,地址为视频地址

无线程

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class MockTomcat {
    public static void main(String[] args)  {

        try {
            //创建一个服务器   127.0.0.1:10010
            ServerSocket serverSocket = new ServerSocket(10010);
            while(true){
                //接收客户端发送的信息
                Socket acceptSocket = serverSocket.accept();
                InputStream inputStream = acceptSocket.getInputStream();
                //BufferReader读取信息
                String line = null;
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
                while((line = bufferedReader.readLine())!=null){
                    if("".equals(line)){
                        break;
                    }
                    System.out.println(line);
                }
                //关闭客户端发送信息
                acceptSocket.shutdownInput();

                //服务器返回信息
                OutputStream outputStream = acceptSocket.getOutputStream();
                //PrintWriter返回信息
                PrintWriter printWriter = new PrintWriter(outputStream);
                //申明一个固定格式
                printWriter.println("HTTP/1.1 200 OK");
                printWriter.println("Content-Type: text/html; charset=utf-8");
                printWriter.println();//必须回车一下
                printWriter.println("<html><body><div style = 'color:red;font-size:33px;'><h1>Hello Tomcat!</h1></div></body></html>");
                printWriter.flush();
                //关闭服务器返回信息
                acceptSocket.shutdownOutput();

                //关闭服务器
                acceptSocket.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

使用线程

线程类

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class SocketMock {
    public static void main(String[] args)  {
        try {
            //创建一个服务器   127.0.0.1:10010
            ServerSocket serverSocket = new ServerSocket(10010);
            while(true){
                //接收客户端发送的信息
                Socket acceptSocket = serverSocket.accept();
                new Thread(new RequestHandle(acceptSocket)).start();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

调用类

import java.io.*;
import java.net.Socket;

public class RequestHandle implements Runnable{
    private Socket acceptSocket;
    public RequestHandle(Socket acceptSocket){
        this.acceptSocket = acceptSocket;
    }
    @Override
    public void run() {
        try {
            InputStream inputStream = acceptSocket.getInputStream();
            //BufferReader读取信息
            String line = null;
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            while((line = bufferedReader.readLine())!=null){
                if("".equals(line)){
                    break;
                }
                System.out.println(line);
            }
            //关闭客户端发送信息
            acceptSocket.shutdownInput();

            //服务器返回信息
            OutputStream outputStream = acceptSocket.getOutputStream();
            //PrintWriter返回信息
            PrintWriter printWriter = new PrintWriter(outputStream);
            //申明一个固定格式
            printWriter.println("HTTP/1.1 200 OK");
            printWriter.println("Content-Type: text/html; charset=utf-8");
            printWriter.println();//必须回车一下
            printWriter.println("<html><body><div style = 'color:red;font-size:33px;'><h1>Hello Tomcat!</h1><br><a href = 'http://www.baidu.com'>百度</a></div></body></html>");
            printWriter.flush();
            //关闭服务器返回信息
            acceptSocket.shutdownOutput();


        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            try {
                //关闭服务器
                if(acceptSocket!=null){
                    acceptSocket.close();
                }

            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值