教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 资格考试 >

简单Web服务器设计与实现课程设计(2)

来源:网络收集 时间:2026-01-30
导读: 1.2 课程设计的内容 (1)熟悉WWW服务器和WEB服务器的工作原理; (2)熟悉套接字编程的相关知识; (3)完成一个简单的WEB服务器的设计与实现,要求能够通过HTTP GET命令获得一个简单的HTML文件; (4)运行该服务

1.2 课程设计的内容

(1)熟悉WWW服务器和WEB服务器的工作原理;

(2)熟悉套接字编程的相关知识;

(3)完成一个简单的WEB服务器的设计与实现,要求能够通过HTTP GET命令获得一个简单的HTML文件;

(4)运行该服务器,并编写一个简单的HTML文件完成测试。

1.3 课程设计要求

(1)按要求编写课程设计报告书,能正确阐述设计结果。

(2)通过课程设计培养学生严谨的科学态度,认真的工作作风和团队协作。

(3)学会文献检索的基本方法和综合运用文献的能力。

(4)在老师的指导下,要求每个学生独立完成课程设计的全部内容。

1.4 课程设计平台

Windows7系统;Eclipse软件平台

2 Web服务器的工作原理

2.1 HTTP协议的作用原理

WWW是以Internet作为传输媒介的一个应用系统,WWW网上最基本的传输单位是Web网页。WWW的工作基于客户机/服务器计算模型,由Web 浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信。HTTP协议是基于TCP/IP协议之上的协议,是Web浏览器和Web服务器之间的应用层协议,是通用的、无状态的、面向对象的协议。HTTP协议的作用原理包括四个步骤:连接,请求,应答,关闭应答。

HTTP协议的作用原理包括四个步骤:

(1) 连接:Web浏览器与Web服务器建立连接,打开一个称为socket(套接字)的虚拟文件,此文件的建立标志着连接建立成功。

计算机网络课设报告,java平台实现,Java;HTTP;Web服务器

GET或POST命令(POST用于FORM参数的传递)。GET命令的格式为: GET 路径/文件名 HTTP/1.0 。其中文件名指出所访问的文件,HTTP/1.0指出Web浏览器使用的HTTP版本。

(3) 应答:Web浏览器提交请求后,通过HTTP协议传送给Web服务器。Web服务器接到后,进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏览器上显示出所请求的页面。

例:假设客户机与:8080/mydir/index.html建立了连接,就会发送GET命令:GET /mydir/index.html HTTP/1.0。主机名为 / 的Web服务器从它的文档空间中搜索子目录mydir的文件index.html。如果找到该文件,Web服务器把该文件内容传送给相应的Web浏览器。

为了告知 Web浏览器传送内容的类型,Web服务器首先传送一些HTTP头信息,然后传送具体内容(即HTTP体信息),HTTP头信息和HTTP体信息之间用一个空行分开。

(4) 关闭连接:当应答结束后,Web浏览器与Web服务器必须断开,以保证其它Web浏览器能够与Web服务器建立连接。

2.2 Java开发语言相关知识与技术

Java主要技术有:多线程,I/O流操作,网络编程。

2.2.1 java中的多线程及实现:

Java是面向对象的程序语言,用Java进行程序设计就是设计和使用类,Java为我们提供了线程类Thread来创建线程,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象。下面是一个创建启动一个线程的语句:

Thread thread1=new Thread(); file://声明一个对象实例,即创建一个线程;

Thread1.run(); file://用Thread类中的run()方法启动线程;

从这个例子,我们可以通过Thread()构造方法创建一个线程,并启动该线程。事实上,启动线程,也就是启动线程的run()方法,而Thread类中的run()方法没有任何操作语句,所以这个线程没有任何操作。要使线程实现预定功能,必须定义自己的run()方法。Java中通常有两种方式定义run()方法:

通过定义一个Thread类的子类,在该子类中重写run()方法。Thread子类的实例对象就是一个线程,显然,该线程有我们自己设计的线程体run()方法,启动线程就启动了

计算机网络课设报告,java平台实现,Java;HTTP;Web服务器

子类中重写的run()方法。

通过Runnable接口,在该接口中定义run()方法的接口。所谓接口跟类非常类似,主要用来实现特殊功能,如复杂关系的多重继承功能。

线程被实际创建后处于待命状态,激活(启动)线程就是启动线程的run()方法,这是通过调用线程的start()方法来实现的。

线程状态:

1)New

当线程对象被创建时,处于该状态。

2)Runnable:就绪状态,线程满足运行的所有条件但没有正在运行的线程位于该状态,有以下几种情况:

a.处于New状态的线程执行start()。

b.处于Running状态的线程失去CPU。

c.处于Otherwise Block状态的线程阻塞解除。

d.处于Lock Block状态的线程阻塞解除。

3)Running:运行状态

处于运行状态的线程可能发生以下几种情况:

a.线程运行结束,进入Dead状态。

b.CPU被分配给其它线程,进入Runnable状态。

c.满足Otherwise Block的条件,进入Otherwise Block状态。

d.由于锁的原因无法执行,进入Lock Block状态。

e.由于等待的原因无法执行,进入Wait Block状态。

4)Dead:死亡状态

线程运行结束,对于主线程main()结束,对于普通用户线程run()结束。

5)Otherwise Block:阻塞状态,阻塞解除后进入Runnable状态

a.调用sleep(),阻塞解除条件为阻塞时间满。

b.调用join(),阻塞解除条件为调用join()的线程执行结束。

注意:线程进入该状态不会释放锁。

6)Lock Block:锁阻塞状态,阻塞解除后进入Runnable状态

由于无法获得需要的锁而阻塞地线程进入该状态,阻塞解除条件为获得所需的锁。

7)Wait Block:等待阻塞状态,阻塞解除后进入Lock Block状态

计算机网络课设报告,java平台实现,Java;HTTP;Web服务器

阻塞解除条件为其它线程调用该资源的notify()或notifyAll()。

下面一个例子实践了如何通过上述两种方法创建线程并启动它们:

// 通过Thread类的子类创建的线程;

class thread1 extends Thread

{ file://自定义线程的run()方法;

public void run()

{

System.out.println("Thread1 is running…");

}

}

file://通过Runnable接口创建的另外一个线程;

class thread2 implements Runnable

{ file://自定义线程的run()方法;

public void run()

{

System.out.println("Thread2 is running…");

}

}

file://程序的主类'

class Multi_Thread file://声明主类;

{

plubic static void mail(String args[]) file://声明主方法;

{

thread1 threadone=new thread1(); file://用Thread类的子类创建线程; Thread threadtwo=new Thread(new thread2()); file://用Runnable接口类的对象创建线程;

threadone.start(); threadtwo.start(); file://strat()方法启动线程;

}

}

运行该程序就可以看出,线程threadone和threadtwo交替占用CPU,处于并行运行

计算机网络课设报告,java平台实现,Java;HTTP;Web服务器

主类),调用start()方法启动线程的run()方法不同于一般的调用方法,调用一般方法时,必须等到一般方法执行完毕才能够返回start()方法,而启动线程的run()方法后,start()告诉系统该线程准备就绪可以启动run()方法后,就返回start()方法执行调用start()方法 …… 此处隐藏:3333字,全部文档内容请下载后查看。喜欢就下载吧 ……

简单Web服务器设计与实现课程设计(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/96978.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)