java基于TCP的web服务器原型(简陋版Tomcat)

TCP编程基于Socket类

Socket类之前写过聊天室,里面有介绍
web服务器基于http协议

原理 :
浏览器在通过端口向服务器发送网址信息 服务器收到网址字符串后进行分析,找到他请求的网页信息发响应给浏览器。
代码:

	public class TomService {
    public static void main(String[] args) throws IOException {
        ServerSocket  serverSocket = new ServerSocket(18890);//开启端口
         while (true){//死循环使服务器一直在可以接受请求
             Socket socket = serverSocket.accept();//监控是否有浏览器通过这个18890端口进行访问
             System.out.println("服务器开启");
             InputStream inputStream = socket.getInputStream();
             byte[] buffer = new byte[1024];
             int lenght = -1;
             StringBuffer requestMessage=new StringBuffer();
             while ((lenght = inputStream.read(buffer)) > -1){//获取网址
                 String string =new String(buffer,0,lenght);
                 System.out.println(1);
                 requestMessage.append(string);
                 break;
             }
             //分析请求报文
             String message = Analysis.analysiaPlay(requestMessage.toString());
             //想服务器返回数据
              BackMeasage  backMeasage = new BackMeasage(socket);
             backMeasage.backPlay(message);
         }
    }
}


//对拿到的连接进行分析  并返回要的地址信息
class Analysis{
    public static String analysiaPlay(String data){
        String data1 = data.split("\n")[0].split(" ")[1];
        System.out.println(data1);
        String data2 = data1.substring(1);
        System.out.println(data2);
        return data2;
    }
}
class BackMeasage{
static Socket socket;
BackMeasage(Socket socket){
    this.socket = socket;
}
public void backPlay(String path ) throws IOException {
    path ="D:\\File\\Big_data\\"+path;//文件地址信息
    System.out.println(path);
    String data = IOUtils.readText(path);
    System.out.println(data);
    Calendar  i = Calendar.getInstance();
    System.out.println(i.getTime());

	//向浏览器发送Http的响应报文加上自己的数据
    String httpResponse="HTTP/1.1 200 OK\n" +
            "Content-Type:text/html\n" +
            "Date:"+ i.getTime()+"\n"+ "\n"+data;
    OutputStream outputStream = socket.getOutputStream();
    outputStream.write(httpResponse.getBytes());
    outputStream.close();
 }
}

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值