简单Web服务器设计与实现课程设计.doc

上传人:b****2 文档编号:388552 上传时间:2022-10-09 格式:DOC 页数:23 大小:158.50KB
下载 相关 举报
简单Web服务器设计与实现课程设计.doc_第1页
第1页 / 共23页
简单Web服务器设计与实现课程设计.doc_第2页
第2页 / 共23页
简单Web服务器设计与实现课程设计.doc_第3页
第3页 / 共23页
简单Web服务器设计与实现课程设计.doc_第4页
第4页 / 共23页
简单Web服务器设计与实现课程设计.doc_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

简单Web服务器设计与实现课程设计.doc

《简单Web服务器设计与实现课程设计.doc》由会员分享,可在线阅读,更多相关《简单Web服务器设计与实现课程设计.doc(23页珍藏版)》请在冰豆网上搜索。

简单Web服务器设计与实现课程设计.doc

琼州学院电子信息工程学院

课程设计报告

课程名称:

计算机网络

设计题目:

简单web服务器设计与实现

专业:

软件工程

学生姓名:

王永浩(11241056)、宋雨(11241060)

夏成鹏(11241066)、黄兵周(11241007)

指导教师:

陈德祥

日期:

2014年4月6日

指导教师评语:

最终成绩:

指导教师签名:

年月日

成绩评定

项目

权重

成绩

1、设计过程中的学习态度

0.2

2、课程设计的质量及答辩

0.5

3、设计报告书规范程度

0.3

4、总成绩

目录

摘要 -2-

1前言 -2-

1.1课程设计前准备 -2-

1.2课程设计的内容 -3-

1.3课程设计要求 -3-

1.4课程设计平台 -3-

2Web服务器的工作原理 -4-

2.1HTTP协议的作用原理 -4-

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

2.2.1java中的多线程及实现:

-5-

2.2.2I/O字节流操作 -7-

2.2.3网络架构:

-9-

3开发环境及套字接编程 -10-

3.1Web服务器的开发环境 -10-

3.2Web服务器的套接字编程 -11-

3.2.1ServerSocket类 -11-

4WEB服务器的设计与实现 -12-

4.1Web服务器的程序设计流程 -12-

4.2用Java实现Web服务器的主要设计步骤及程序 -13-

5测试运行 -20-

5.1调试运行 -20-

结束语 -21-

参考文献 -22-

摘要

WWW的工作基于客户机/服务器计算模型,由Web浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信,HTTP协议的作用原理包括四个步骤:

连接,请求,应答,关闭应答。

在课程设计中,系统开发平台为Win7,程序设计语言采用Java,程序运行平台为Eclipse。

在程序设计中,采用了结构化与面向对象两种解决问题的方法。

程序通过调试运行,初步实现了设计目标,并且经过适当完善后,将可以应用在商业中解决实际问题。

关键词:

Java;HTTP;Web服务器

1前言

Internet是目前世界上最大的计算机互联网络,与大家的生活、学习、工作有着越来越密切的关系,它遍布全球,将世界各地各种规模的网络连接成一个整体,其用户群十分庞大,因此,建设一个好的Web站点对于一个机构的发展十分重要。

近年来,随着网络用户要求的不断提高及计算机科学的迅速发展,特别是数据库技术在Internet中的广泛应用,Web站点向用户提供的服务将越来越丰富,越来越人性化。

本课程设计主要解决由Web浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信的Web服务器的程序设计。

1.1课程设计前准备

以下的工作均是建立在大量的调查基础上的,是Web服务器开发前期准备工作所解决的问题。

(1)Java简介

Java是由sun公司开发的一种新型的面向对象的程序设计语言,主要用于web页面的设计[1]。

Java语言的流行除了因为它能够编制嵌入HTML文件中的Applet外,还在于Java语言本身的面向对象、简单、平台无关性、安全性、多线程等特点。

Java语言的发展颇具传奇性,它与Internet的WWW的迅猛发展是分不开的。

由于其发展迅速,有人将它比喻为Internet上的世界语。

前面讲到在Internet上Web页面的设计采用的是HTML语言,用户借助于Web浏览器(如Netscape,HotJava,IE等),可以访问到远程web服务器上静态的、具有超链接的Web页面[2]。

(2)HTTP协议简介

HTTP协议是应用层的协议,定义了服务器端和客户端之间文件传输的沟通方式。

HTTP协议用于从WWW服务器传输超文本到本地浏览器的传送协议。

由于HTTP协议支持的服务不限于WWW,还可以是其它服务,它允许用户在统一的界面下,采用不同的协议访问不同的服务。

它可以使浏览器更加高效,使网络传输减少。

它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示等[3]。

1.2课程设计的内容

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

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

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

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

1.3课程设计要求

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

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

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

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

1.4课程设计平台

Windows7系统、Eclipse软件平台。

2Web服务器的工作原理

2.1HTTP协议的作用原理

WWW是以Internet作为传输媒介的一个应用系统,WWW网上最基本的传输单位是Web网页。

WWW的工作基于客户机/服务器计算模型,由Web浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信。

HTTP协议是基于TCP/IP协议之上的协议,是Web浏览器和Web服务器之间的应用层协议,是通用的、无状态的、面向对象的协议。

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

连接,请求,应答,关闭应答。

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

(1)连接:

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

(2)请求:

Web浏览器通过socket向Web服务器提交请求。

HTTP的请求一般是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.htmlHTTP/1.0。

主机名为的Web服务器从它的文档空间中搜索子目录mydir的文件index.html。

如果找到该文件,Web服务器把该文件内容传送给相应的Web浏览器。

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

(4)关闭连接:

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

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

Java主要技术有:

多线程,I/O流操作,网络编程。

2.2.1java中的多线程及实现:

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

下面是一个创建启动一个线程的语句:

Threadthread1=newThread();file:

//声明一个对象实例,即创建一个线程;

Thread1.run();file:

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

从这个例子,我们可以通过Thread()构造方法创建一个线程,并启动该线程。

事实上,启动线程,也就是启动线程的run()方法,而Thread类中的run()方法没有任何操作语句,所以这个线程没有任何操作。

要使线程实现预定功能,必须定义自己的run()方法。

Java中通常有两种方式定义run()方法:

通过定义一个Thread类的子类,在该子类中重写run()方法。

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

通过Runnable接口,在该接口中定义run()方法的接口。

所谓接口跟类非常类似,主要用来实现特殊功能,如复杂关系的多重继承功能。

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

线程状态:

1)New

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

2)Runnable:

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

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

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

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

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

3)Running:

运行状态

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

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

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

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

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

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

4)Dead:

死亡状态

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

5)OtherwiseBlock:

阻塞状态,阻塞解除后进入Runnable状态

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

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

注意:

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

6)LockBlock:

锁阻塞状态,阻塞解除后进入Runnable状态

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

7)WaitBlock:

等待阻塞状态,阻塞解除后进入LockBlock状态

由于某个资源的原因必须进行等待,则进入该状态。

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

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

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

   classthread1extendsThread

    {file:

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

     publicvoidrun()

      {

       System.out.println("Thread1isrunning…");

      }

     }

   fil

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1