下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验十三 Web服务器的实现一、实验目的及任务1、实验目的熟悉简单网络的搭建与基本配置;熟悉socketn多线程编程;熟悉JDK编程工具的基本使用;熟悉HTTP协议;熟悉Web服务器的基本工作原理和配置。2、实验任务(1)以JDK为开发工具,利用Socket通信机制实现一个多线程的WEB服务器,该服 务器具有以下功能:能够并行服务于多个请求。对于每个请求,显示接收到的HTTP请求报文的内容,并产生适当的响应(假设 找到用户请求对象,那么返回该对象。否那么发送一个包含适当提示信息的响应消 息,从而可以在浏览器窗口中显示过失信息。)(2)搭建一个简单的网络环境,调试web服务器程序。二、实验环境操
2、作系统:Windows2000 server开发工具:JDK或其他开发工具实验设备:交换机(一台)、计算机(两台)、网线假设干三、实验相关知识点(本课程综合或多课程综合)1、网络基本原理(如:HTTP协议、Web服务器、Socket、TCP、UDP等)2、网络服务器基本配置(简单C/S网络的组建、web服务器的基本配置等)3、程序设计(sockel编程、多线程程序设计等)四、实验实施步骤1、开发程序2、搭建简单的C/S网络3、配置并测试web服务器程序五、实验报告内容1、写出实现“一、实验要求”中所述功能的Web服务器程序的结构框图。2、写出实现“一、实验要求”中所述功能的Web服务器程序的代
3、码。3、总结程序设计、调试中出现的问题及其解决方法。4、实验心得。附件一:Java的多线程编程一、理解多线程多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个 线程,彼此间互相独立。线程又称为轻量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,IX 别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这 使得线程间的通信远较进程简单。多个线程的执行是并发的,也就是在逻辑上“同时7而不管是否是物理上的“同时”。如 果系统只有一个单核CPU,那么真正的“同时”是不可能的。但是由于CPU的处理速度非 常快,用户感觉好像自己的程序连续运行一样
4、。因此我们也不用关心它,只需要设想各 个线程是同时执行即可。多线程和传统的单线程在程序设计上最大的区别在于,由于各个线程的控制流彼此独立, 使得各个线程之间的代码是乱序执行的,由此带来的线程调度,同步等问题,将在以后 探讨。二、在Java中实现多线程为了创立一个新的线程,我们需要做些什么?很显然,我们必须指明这个线程所要执行 的代码,而这就是在Java中实现多线程我们所需要做的一切。作为一个完全面向对象的 语言,Java提供了类来方便多线程编程,这个类提供了大量的方法来 方便我们控制自己的各个线程。Thread类最重要的方法是run(),它为Thread类的方法start()所调用,提供我们的
5、线 程所要执行的代码。为了指定我们自己的代码,只需要覆盖它。1、方法一:继承Thread类,覆盖方法run()我们在创立的Thread类的子类中重写run(),加入线程所要执行的代码即可。下面是一个例子:public class My Th read extends Thread (int count= 1, number;public MyThread(int num) number = num;(创立线程+ number);public void run() while(true) (“线程+ number + :计数+ count);if(+count= 6) return;)publi
6、c static void main(String args) for(int i = 0; i 5; i+) new MyThrcad(i+1).start();)这种方法简单明了,符合大家的习惯,但是,它也有一个很大的缺点,那就是如果类已 经从一个类继承(如小程序必须继承自Applet类),那么无法再继承Thread类(Java不允 许多重继承,即一个类的父类只能有一个),这时如果又不想建立一个新的类,应该怎么 办呢?不妨来探索一种新的方法:不创立Thread类的子类,而是直接使用它,那么我们只能 将我们的方法作为参数传递给Thread类的实例。这有点类似回调函数。但是Java没有 指针,
7、我们只能传递一个包含这个方法的类的实例。那么如何限制这个类必须包含这一 方法呢?使用接口。Java提供了接口 来支持这种方法。2、方法二:实现Runnable接口Runnable接口只有一个方法run(),我们声明自己的类实现Runnable接口并提供这一 方法,将我们的线程代码写入其中,就完成了这一局部的任务。但是Runnable接口并没有任何对线程的支持,我们还必须创立Thread类的实例,这 一点通过 Thread 类的构造函数 public Thread(Runnable target);来实现。下面是一个例子:public class My Th read implements Ru
8、nnable int count= 1, number;public MyThread(int num) number = num;(创立线程+ number);)public void run() while(true) (“线程 ” + number + ”:计数 + count);if(+count= 6) return;public static void main(String args(l) for(int i = 0; i 5; i+) new Thread(new MyThread(i+1 ).start();)使用Runnable接口来实现多线程使得我们能够在一个类中包容所有的代码,有利于封 装,它的缺点在于,我们只能使用一套代码,假设想创立多个线程并使各个线程执行不同 的代码,那么仍必须额外创立类,如果这样的话,在大多数情况下也许还不如直接用多个 类分别继承Thread来得紧凑。综上所述,两种方法各有千秋,大家可以灵活运用。多线程的核心在于多个代码块并发执行,本质特点在于各代码块之间的代码是乱序执行 的。我们的程序是否需要多线程,就是要看这是否也是它的内在特点。假如我们的程序 根本不要求多个代码块并发执
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 防火安全施工措施实施方案
- 企业文化建设推广方案模板
- 医院危急值管理流程标准化实施方案
- 2025年司法考试刑法模拟试卷(刑法中的法律漏洞争议问题解析)及答案
- 幼儿园大班线描画教学设计方案
- 三级篮球裁判理论试题及答案解析(2025版)
- 安全员A证考试考前冲刺测试卷讲解及完整答案详解一套
- 安全员A证考试真题汇编附完整答案详解(夺冠)
- 小学体育课新课标解读与训练方案
- 安全员A证考试考前冲刺测试卷讲解【新题速递】附答案详解
- 乙状结肠冗长护理查房
- 短文鲁迅阅读题目及答案
- 高碳铬铁生产流程
- 2025漂浮式海上风电场工程可行性研究报告编制规程
- 路基工程施工方案(2016.11.6)
- UL676标准中文版-2019水下灯具和接线盒UL标准中文版
- 医学教材 常见心律失常诊治(基层医院培训)
- 体温单模板完整版本
- 武汉市2024届高中毕业生二月调研考试(二调)英语试卷(含答案)
- 天然美肌无添加的护肤品
- 湖南省长沙市外国语学校 2021-2022学年高一数学文模拟试卷含解析
评论
0/150
提交评论