由于计算机网络原理这门课的作业……嗯,简单练习了下做一个简易的服务器
该简易服务器十分简陋(甚至只有两个状态(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服务器的简单思路和框架