Java自制简易http服务器(1)

由于计算机网络原理这门课的作业……嗯,简单练习了下做一个简易的服务器


该简易服务器十分简陋(甚至只有两个状态(200和404),只接受get方法),同时也没有使用任何比较复杂的类和包。

代码基本纯暴力实现……

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

public class Java_web_test {
    public static void main(String args[]) throws IOException {
    ServerSocket tt=new ServerSocket(6699);//监听6699端口
while ( true ){ String rootpath=System. getProperty ( "user.dir" )+File. separator + "静态网页" ; //网页文件夹叫做静态网页,前面的是获取系统下当前Java文件的路径 Socket mt = tt.accept() ; BufferedReader asd = new BufferedReader( new InputStreamReader(mt.getInputStream())) ; //获得套接字传来的输入流 String m ; m=asd.readLine() ; //读取首部第一行的请求文件 System. out .println(m) ; String[] array=m.split( " " ) ; //按照空格分开 while (asd.ready()){ //打印请求报文 m=asd.readLine() ; System. out .println(m) ; } System. out .println() ; File sll= new File(rootpath+array[ 1 ]) ; //获取请求文件 if (sll.isFile()){ //文件存在,走200 BufferedReader mmt= new BufferedReader( new FileReader(rootpath+array[ 1 ])) ; m=mmt.readLine() ; BufferedWriter ssd= new BufferedWriter( new OutputStreamWriter(mt.getOutputStream())) ; StringBuffer n= new StringBuffer() ; //存读取的文件数据 n.append( "Http/1.1 200 OK \r\n\r\n " ) ; //造一个http报文头 int a= 1 , b= 0 ; n.append(m) ; while (mmt.ready()){ //数据全部写入缓冲 n.append(mmt.readLine()) ; a=n.length() ; if (a==b){ break; } b=a ; } ssd.write(n.toString()) ; System. out .println(n.toString()) ; //打印写出报文 ssd.flush() ; //发送 } else { //不存在,走404 BufferedWriter sdd= new BufferedWriter( new OutputStreamWriter(mt.getOutputStream())) ; sdd.write( "Http/1.1 404 ERROR \r\n\r\n " ) ; sdd.flush() ; } mt.shutdownOutput() ; mt.close() ; //关闭端口 } }}



希望能给大家一个关于java服务器的简单思路和框架

你可能感兴趣的:(Java,WebServer)