资源简介
该压缩包是计算机网络课程的实验——多线程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模拟
- 开题报告 毕业论文 jsp实验室管理系统
- Java实验之雷达图源程序
- 数据库管理系统java实现
- java实现DBMS
- 广工Java实验+课设
- Java实验答案
- JAVA实验字符串的滚动
- java学生管理系统 源代码和实验报告
- Java实验报告书样本5个实验 word格式
- 耿祥义_张跃平_Java_2实用教程(3版)
- java 英汉小词典实验文档及源码acces
- 实验室管理系统(后端)gongda-master
- 河工大 java实验课程资源 代码及实验
- java编写的计算器实验报告
- java课程设计实验报告
- 操作系统大型实验-二级目录文件系统
- 一个简单的java计算器实验报告
- 操作系统实验 内存管理 java编写 有界
- 操作系统实验和课设,java实现动态内
- java网络抓包实验报告
- Java程序设计实践4 --网络聊天室(含实
- IEEE 802.3以太网帧封装——javafx可视化
- java 操作数据库的实验报告
- Java 记事本
- j2ee实验-实现用户登录功能-servlet+js
- 用java实现2048小游戏的实验报告
- 天气预报应用实现实验报告.doc
- Java简单的记事本程序完整代码含实验
- 操作系统实验报告-文件管理系统
评论
共有 条评论