资源简介
该压缩包是计算机网络课程的实验——多线程Web服务器的设计与实现,里面内容很全,也有文档描述怎样操作,代码的注释很清晰,傻瓜式的,有java编程基础的一看就会

代码片段和文件信息
package test;
import java.io.*; //导入输入输出流包,且是导入包中所有类
import java.io.BufferedReader; //字符缓冲输入流包导入
import java.io.File; //文件流包导入
import java.io.IOException; //输入输出流异常处理包导入
import java.io.InputStream; //字节输入流包导入
import java.io.PrintStream; //字节输出打印流包导入,它是 OutputStream的子类
import java.net.Socket; //网络功能包套接字子包导入
public class Processor extends Thread { //声明线程子类Processor他的超类是 thread
private PrintStream out; //声明私有成员变量—out(输出流)
private InputStream input; //声明私有成员变量—input(输入流)
public static final String WEB_ROOT=“E:\\Java\\wangluo\\bin\\test“; //声明并初始化静态最终类字符串常量---服务器提供文件存储位置
public Processor(Socket socket) { //声明构造成员方法---创建线程
try { //创建异常处理机制
input=socket.getInputStream(); //赋值表达式—从套接字获得客户端 连接输入,返回字节输入流 inputstream对象并赋值给input
out=new PrintStream(socket.getOutputStream());//实例化输出流对 象—输出到客户端
} catch (IOException e) { //捕捉匹配异常
e.printStackTrace(); //显示异常信息
}
}
public void run() { //创建run方法,它是对象的线程体(这里涉及子类对超类的 方法覆盖)-----在线程被创建启动后,直接调用
try { //构造监视块,捕捉异常
String fileName=parse(input); // 调用方法parse解析客户端请求信息 获取请求文件名
readFile(fileName); // 调用方法readFile打开读取文件
} catch (IOException e) { //捕捉匹配异常
e.printStackTrace(); //显示异常信息
}
}
public String parse(InputStream input) throws IOException { //声明并 构造方法parse解析客户端输入请求,并抛出可能引发的所有异常
BufferedReader in=new BufferedReader(new InputStreamReader(input)); //声明并实例化字符缓冲输入流对象—用于服务器缓冲输入
String inputContent=in.readLine();//声明成员变量,用于存储调用in的成 员方法读入的客户端输入数据
if (inputContent==null||inputContent.length()==0) {
sendError(400“Client invoke error“);//如果变量值为空或零,输出 客户端调用错误信息
return null; //并返回空值,关闭连接
}
String request[]=inputContent.split(“ “); //声明字符串数组,存放成 员变量inputstream中内容以空格为界分割后的数据信息
if(request.length !=3) { //判断字符串数组长度是否为3
sendError(400“Client invoke error“);//若不为3,输出错误信息
return null;
}
String method=request[0];//声明成员变量method并赋值第一个字符数组中 内容
String fileName=request[1];
String httpVersion=request[2];
System.out.println(“Method:“+method+“file name:“ +fileName +“ HTTP version:“+httpVersion); //显示输出信息
return fileName;
}
public void readFile(String fileName) throws IOException {//构造方法读取文件内容,若发生错误抛出所有异常,并将异常处理交给调用者
File file=new File(Processor.WEB_ROOT+fileName);//实例化文件对象并 与实际文件建立关联
if (!file.exists()) { //判断文件是否存在
sendError(404“File Not Found“);//文件不存在则输出错误信息—是输 出显示在客户端
return;
}
InputStream in=new FileInputStream(file);//创建文件输入流对象并打开 源文件
byte content[]=new byte[(int) file.length()]; //实例化字节数组
in.read(content); //从输入流对象中读入数据到字节数组content中
out.println(“HTTP/1.1 200 sendFile“); //输出流打印信息
out.println(“Content-length:“+content.length);
out.println();//这段打印信息并不会显示在web浏览器网页源代码中,应该是 给http协议理解的,过滤掉了
out.write(content); //将字节数组内容写入输出流—真正的请求文件信息
out.flush(); //强制输出缓冲区数据
out.close(); //关闭打印流
in.close(); //关闭输入流
}
public void sendError(int errNumString errMsg) {//构造错误信息发送方 法
out.println(“HTTP/1
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 10 2018-11-02 10:32 多线程Web服务器的设计与实现\1.txt
文件 21036 2018-07-25 21:25 多线程Web服务器的设计与实现\3.png
文件 4220 2018-11-02 11:14 多线程Web服务器的设计与实现\Processor.java
文件 1701 2018-11-02 11:14 多线程Web服务器的设计与实现\Webserver.java
文件 157 2018-11-02 10:22 多线程Web服务器的设计与实现\index.html
文件 278017 2018-11-02 10:38 多线程Web服务器的设计与实现\截图.docx
文件 110406 2018-11-02 16:39 多线程Web服务器的设计与实现\请按照此操作.docx
目录 0 2018-11-02 16:39 多线程Web服务器的设计与实现\
- 上一篇:org.swtchart.jar+example
- 下一篇:Utils.java
相关资源
- 合肥工业大学java实验及作业大全
- Java记事本【源代码 实验报告】
- 八数码java和报告
- JAVA计算器实验报告与源码
- 计算机网络CRC循环冗余检测系统
- 实验室设备管理系统Java版
- 中南民族大学计算机科学学院java实验
- 计算机网络课设24分游戏 java
- 多功能拼图游戏软件 java课程设计 含
- JAVA飞机大战 ,附所有图片以及实验报
- java图书管理系统含数据库,实验报告
- JAVA实训 俄罗斯方块(带源程序和实
- 操作系统课程设计题目四单处理器系
- 华中科技大学计算机组成原理实验.
- Java模拟操作系统实验之四种进程调度
- 操作系统课程设计题目四单处理器系
- java web 教务系统大作业实验报告含代
- Rose实验(Oberon-0实验三)
- 广州大学编译原理实验报告1-3.zip
- 桂浩 解释器构造实验1
- 1503java基于Web的实验室机房预约管理系
- 计算机网络课程设计报告_DH算法_Wir
- 安卓拼图游戏实验报告
- socket编程实验报告
- 西工大安卓大作业-日记本源码+实验报
- j2ee实验-模拟传感器的Web程序-servlet
- java web 课程设计实验报告.docx
- 编译原理实验 词法分析设计 MFC
- Java满天繁星课程实验
- 计算机网络课程设计(JPCAP发包与抓包
评论
共有 条评论