春级城市学院网络编程试验指导书.docx
- 文档编号:7290759
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:42
- 大小:637.98KB
春级城市学院网络编程试验指导书.docx
《春级城市学院网络编程试验指导书.docx》由会员分享,可在线阅读,更多相关《春级城市学院网络编程试验指导书.docx(42页珍藏版)》请在冰豆网上搜索。
春级城市学院网络编程试验指导书
2009级城市学院网络编程技术实验指导书
实验一、Application与Applet程序调试运行
实验目的:
熟悉所用系统的上机方法与步骤。
实验环境:
安装Windows2000或Windowsxp计算机和JDK编译器。
实验内容:
编写一个JavaApplication和一个Applet程序,输出以下信息:
Hello,JavaWorld!
java程序分为javaapplication(java应用程序)和javaapplet(java小应用程序)两种。
1、JavaApplication
Application是在本地独立运行的完整的Java程序。
Application与网络的联系不如Applet那样密切,它一般存储在本地机,运行时也不需要浏览器,而是由独立的Java解释器来解释执行。
Application的程序特点是它包含一个含有main()方法的主类,这个main()方法就是整个程序的执行入口点。
下面是用Application写的程序,它完成的功能是在屏幕上输出一个字符串“Hello,JavaWorld!
”。
由于Application无法借助浏览器的窗口系统,所以字符串“Hello,JavaWorld!
”是直接显示在字符界面中的。
Application编译生成的字节码文件存储在本地,不需要网络下载,由本地的独立解释器解释执行,因此它的安全性限制没有Applet那么严格,与本地普通的应用程序相当。
但同时,由于不能像Applet那样充分利用浏览器系统提供的
窗口系统,Application必须创建和管理自己的图形界面,乃至整个程序。
由于Application的可靠性好,编程自由度大和功能较强,它较多用于网络的服务器端的应用编程。
2、JavaApplet
JavaApplet是嵌入在HTML文件中运行的Java小程序,它的程序结构特点是程序中必然包含一个继承了系统Applet类的子类,这个子类用来在解释执行Applet的浏览器中建立一个Java的工作区,显示有关信息,接受用户命令。
javaapplet程序也是一个类,其编译方式与javaapplication完全一样。
javaapplet的执行方式与javaapplication完全不同,javaapplet程序必须嵌入到html文件中才能够执行,因此必须编写相应的html文件。
下面是一个最简单的JavaApplet程序:
这个程序的功能是在浏览器的JavaApplet工作区中显示字符串“Hello,JavaWorld!
”。
这个程序由一个类组成,类名为HelloWorld,它是系统类Applet的子类。
类HelloWorld包含了一个方法paint(),这个方法负责在工作区的指定位置显示字符串,由解释执行Applet的浏览器自动调用执行。
Applet没有main()方法,它必须嵌在超文本文件中,在浏览器中进行运行。
所有的Applet程序都是Applet类的子类,Applet程序是从方法init()开始执行的。
Applet不能独立运行,必须依赖一个特殊的环境框架——浏览器。
这一特殊的运行机制对安全性也提出了较高的要求,所以需Applet可以执行的操作权限做相应的限制。
该程序编译后生成HelloWorld.class文件,为了运行这个程序,需要编写一个html文件来调用它,html文件和其放在同一目录,
下面为HelloWorld.html文件的内容:
然后可以通过JDK所提供的命令“appletviewer”,在命令行下面执行javaapplet程序。
如果是在windows操作系统中,就可以在"命令提示符"下敲入"appletviewerHelloEducation.html“。
applet还可以采用另外一种方式运行,就是直接在浏览器中打开HelloEducation.html程序,在主流的浏览器如IE、Netscape中都包含有java虚拟机,负责解释执行javaapplet程序。
实验二Java语法基础
实验目的:
熟悉面向对象程序设计语言Java语言的语法基础。
实验环境:
安装Windows2000或Windowsxp计算机和JDK编译器。
实验内容:
一、Java语言基础
1.编译和运行下面程序,写出执行结果
2.分析程序,掌握for控制语句,写出执行结果。
}
}
}
3.用三种循环语句来分别实现输出10~50之间的3的倍数。
4.打印以下图案(每行打5个星号,每个星号之间空两个空格)。
*****
*****
*****
*****
*****
5.用swith语句实现从键盘读如1,2,3时,屏幕提示不同信息。
二、类的定义及使用
[修饰符]class类名[extends父类名][implements接口列表]
{//类体}
说明:
1)类修饰符分类:
访问修饰符:
缺省(默认方式)、public
非访问修饰符:
abstract、final,不能同时修饰一个类
2)extends:
实现继承
3)implements:
实现接口
1.下面给出了一个矩形类Rectangle,其中含有多个构造方法。
上机编译并运行此程序,观察运行结果,体会其中不同构造方法的设计和使用。
2.编译并运行下面的程序,观察分析运行结果,体会程序中super和this的用法,进一步理解变量隐藏和方法重写的概念。
3.编译并运行下面的程序,分析运行结果,体会其中方法重载的用法,进一步理解方法重载的概念。
三、Java的接口
1、接口的基本概念
Java中的接口在语法上有些类似于类,它定义了若干的抽象方法和常量,形成一个属性集合,该属性集合通常代表了某一功能的实现。
它的主要作用是可以帮助我们实现类似于类的多重继承的功能。
Java中各类获取某一接口定义的功能,并不是通过直接继承这个接口中的域和方法来实现的,因为接口中的域都是常量,接口中的方法都是没有方法体的抽象方法,也就是说,接口定义的仅仅是实现某一特定功能的功能接口和规范,而并没有真正的实现这个功能,这个功能的真正实现实在“继承”了这个接口的各个类中完成的,有这些类来具体定义接口中各抽象方法的方法体。
故在Java中,通常把对接口功能的“继承”称为实现。
2、接口的声明
Java中声明接口的语法如下:
[public]interface接口名[extends父接口名列表]
{//接口体:
//常量域声明
[public][static][final]域类型域名=常量值;
//抽象方法声明
[public][abstract][native]返回值方法名(参数列表)[throw异常列表];
}
3、接口的实现
某个类为接口中的抽象方法书写语句并定义实在的方法体,称为该类实现可这个接口。
示例如下:
四、包的定义和使用
●创建自定义包Mypackage
在存放源程序的文件夹中建立一个子文件夹Mypackage。
例如,在“E:
\java\程序”文件夹之中创建一个与包同名的子文件夹Mypackage(E:
\java\程序\Mypackage),并将编译过的class文件放入该文件夹中。
注意:
包名与文件夹名大小写要一致。
再添加环境变量classpath的路径,例如:
E:
\j2sdk1.4.2_01\lib;E:
\java\程序
●在包中创建类
YMD.java程序功能:
在源程序中,首先声明使用的包名Mypackage,然后创建YMD类,该类具有计算今年的年份并输出一个带有年月日的字符串的功能。
源代码如下
编译Test_YMD.java文件,然后将Test_YMD.class文件存放到Mypackage文件夹中。
●编写使用包Mypackage中Test_YMD类的程序
YMD_2.java程序功能:
给定某人姓名与出生日期,计算该人年龄,并输出该人姓名,年龄,出生日期。
程序使用了Test_YMD的方法来计算年龄。
源代码如下
编译并运行程序。
实验三、异常处理程序设计
实验目的:
了解Java中异常处理(exception)的作用及常用的异常类,掌握异常处理的设计方法。
实验环境:
安装Windows2000或Windows98计算机和JDK编译器。
实验要求:
理解系统异常处理的机制和创建自定义异常的方法。
实验内容:
在已实现的方法中,加入出错处理异常(EXCEPTION),又称例外,是特殊的运行错误,对应着Java语言特定的运行机制。
由于Java程序是在网络环境中运行的,安全成为需要首先考虑的首要因素之一。
为了能够及时有效的处理程序中的运行错误,Java中引入了异常和异常类。
作为面向对象的语言,异常与其它语言要素一样,是面向对象规范的一部分,是异常类的对象。
异常类结构与组成:
Java的异常类是处理运行是错误的特殊类,每一种异常类对应一种特定的运行错误。
所有的Java异常类都是系统类库中的Exception类的子类。
其类继承结构如下图:
Throwable类是java.lang包中的一个类,它派生了两个子类:
Exception和Error。
其中Error类由系统保留,而Exception类则供应用程序使用。
系统定义的运行异常:
Exception类有若干子类,每一个子类代表了一种特定的运行错误。
这些子类有些是系统事先定义好包含在Java类库中的,称为系统定义的运行异常。
系统定义的运行异常通常对应着系统运行错误。
由于这种错误可能导致操作系统错误,甚至是整个系统的瘫痪,所以需要定义异常来特别处理。
用户自定义的异常:
系统定义的异常主要用来处理系统可以预见的较常见的运行错误,对于某个应用所特有的错误,则需要用户程序自己创建用户自定义异常。
这种用户自定义异常主要用来处理用户程序中特定的逻辑运行错误。
用户自定义异常用来处理程序中可能产生的逻辑错误,使得这种错误能够被系统及时识别并处理。
因此用户自定义异常可以使用户程序更为强健,使整个系统更加安全稳定。
异常的抛出:
Java程序在运行时如果引发了一个可识别的错误,就会产生一个与该错误相对应的异常类的对象,这个过程被称为异常的抛出。
异常的抛出根据异常类的不同,抛出的方法也不同。
所有的系统定义的异常都可以由系统自动抛出;用户程序自定义的异常必须借助于throw语句来定义何种情况算是产生了此种异常对应的错误,并应该抛出这个异常的新对象。
异常的处理:
当一个异常被抛出时,应有专门的语句来接受这个被抛出的异常对象,这个过程被称为捕捉异常。
当一个异常类被捕捉或接收后,用户程序就会发生跳转,系统中止当前的流程而跳转至专门的异常处理语句块,或直接跳出当前程序和Java虚拟机回到操作系统。
在Java程序里,异常处理语句的格式如下:
try{
//用try语句来选定捕获异常的范围
}
catch{
//异常处理语句
}
finally{
//总是会被执行的代码
}
1、用try-catch-finally结构实现异常处理。
编译并运行程序,写出程序运行结果。
2、编译并运行程序,写出程序运行结果。
3、输入并运行下面的程序,写出程序运行结果。
4、请看下面的定义
Strings=null;
if((s!
=null)&(s.length()>0));
if((s!
=null)&&(s.length()>0));
if((s==null)|(s.length()>0));
if((s==null)||(s.length()>0));
在上面4个语句中,哪个能引发异常?
是哪种类型的异常?
请说明理由。
实验四多线程程序设计
实验目的:
理解线程的概念、线程的生命周期,掌握多线程的编程:
继承Thread类与使用Runnable接口。
实验环境:
安装Windows2000或Windows98计算机和JDK编译器
实验要求:
1、掌握两种创建线程的方法:
一种是创建用户自己的线程子类,另一种是在用户自己的类中实现Runable接口。
2、掌握线程优先极。
3、掌握线程的同步方法。
实验内容:
多线程是指同时存在的几个执行体,按几条不同的执行线索共同工作的情况。
Java语言的一个重要功能特点就是内置对多线程的支持,踏实的编程人员可以很方便的开发出具有多现成功能,能同时处理多个任务的功能强大的应用程序。
Java中编程实现多线程应用有两种途径:
一种是创建用户自己的线程子类,另一种是在用户自己的类中实现Runable接口。
无论那种方法,都需要使用到Java基础类库中的Thread类及其方法。
创建Thread类的子类:
在这个途径中,用户程序需要创建自己的Thread类的子类,并在子类中重新定义自己的run()方法,这个run()方法中包含了用户线程的操作。
这样在用户程序需要建立自己的线程时,他只需要创建一个一定已定义好的Thread子类的实例就可以了。
实现Runnable接口:
在这个途径中,已经有了一个父类的用户类可以已通过实现Runable()接口的方法来定义用户线程的操作。
我们知道,Runable接口只有一个方法run(),实现这个接口,就必须要定义run()方法的具体内容。
用户新建现成的操作也有这个方法来决定。
定义好run()方法后,当用户程序需要建立新线程时,只要以这个实现了Runnable()方法的类为参数创建系统类Thread的对象,就可以把用户实现的run()方法继承过来。
●1、用创建Thread类的子类的方法实现多线程:
2、用实现Runnable接口的方法实现多线程。
编译并运行程序。
3、线程优先级的作用:
用继承Thread类和执行Runnable接口的方法创建两个线程,并测试这两个线程的同时运行情况。
a.将两个线程设为同优先级,比较运行情况。
b.将两个线程设为同优先级,比较线程调用sleep()/yeild()方法后出现什么情况。
c.将两个线程设为不同优先级,比较以上两种情况。
4、线程的同步:
编写两个线程,一个线程向数组中存数据,一个线程向数组中取数据。
练习如何实现线程的同步。
实验五:
系统I/O程序设计
实验目的:
理解数据流的概念、Java流的层次结构及文件的概念;熟悉图形用户界面基本组件的使用方法,熟悉如何使用布局管理器对组件进行管理及如何使用Java的事件处理机制。
实验要求:
1、掌握字节流和字符流的基本使用方法。
2、能够创建、读写、更新文件。
3、掌握在Applet容器中添加组件的方法,掌握使用布局管理器对组件进行管理的方法。
4、理解Java的事件处理机制,掌握为不同组件编写事件处理程序的方法。
5、掌握编写独立运行的窗口界面的方法。
6、了解对话框及JavaSwing组件的使用方法。
实验内容:
1、创建标准数据流的应用程序
标准数据流指在字符方式下(如DOS提示符)程序与系统进行输入输出的方式,键盘和显示器屏幕是标准输入输出设备,数据输入的起点为键盘,数据输出的终点是屏幕,输出的数据可以在屏幕上显示出来。
程序功能:
将键盘上输入的字符在屏幕上显示出来,源代码如下
编译运行该程序,写出运行结果(应至少包括3次输入及相应运行结果)。
2、使用文件输入输出流的应用程序
1)程序功能:
读入一个文件的内容拷贝到另一个文件中去,源代码如下
importjava.io.*;
写出该程序功能及运行结果(需注明输入或用到的原文件内容)。
2)从一个文本文件以流的形式输出文件内容
importjava.io.*;
}
}
3、创建图形用户界面
图形用户界面(GraphicUserInterface,简称GUI)是为方便用户使用设计的窗口界面,在图形用户界面中用户可以看到什么就操作什么,取代了在字符方式下知道是什么后才能操作什么的方式。
组件(Component)是构成GUI的基本要素,通过对不同事件的响应来完成和用户的交互或组件之间的交互。
组件一般作为一个对象放置在容器(Container)内,容器是能容纳和排列组件的对象,如Applet、Panel(面板)、Frame(窗口)等。
通过容器的add方法把组件加入到容器中。
AWT类库中的各种操作被定义成在一个并不存在的“抽象窗口”中进行的。
它抽取不同软硬件平台中所实现的窗口的公共特性。
使所设计的界面独立于具体的界面实现,并且提供与机器无关的基本GUI标准组件。
例如:
选择类组件:
单选按钮、复选框、下拉选单、列表框
文字处理类组件:
标签、文本框、编辑框。
命令类组件:
按钮、工具栏、菜单等。
●在Applet中添加标签、按钮并使用网格布局
程序功能:
在Applet容器中添加组件标签、按钮,并使用网格布局管理器排列组件在容器中的位置。
源代码如下:
importjava.awt.*;
importjava.applet.Applet;
}
}
编译程序,编写显示Applet的html页面文件。
●在面板中添加组件
程序功能:
在Applet中添加面板容器,并分别在Applet、面板容器中添加组件并使用不同的布局管理方式。
源代码如下:
编译程序,编写显示Applet的html页面文件。
AWT有关的所有事件类都由java.awt.AWTEvent类派生,AWT事件共有10类,可以归为两大类:
低级事件和高级事件。
低级事件:
ComponentEvent(组件事件:
组件尺寸的变化,移动)
ContainerEvent(容器事件:
组件增加,移动)
WindowEvent(窗口事件:
关闭窗口,窗口闭合,图标化)
FocusEvent(焦点事件:
焦点的获得和丢失)
KeyEvent(键盘事件:
键按下、释放)
MouseEvent(鼠标事件:
鼠标单击,移动)
高级事件(语义事件)
ActionEvent(动作事件:
按钮按下,TextField中按Enter键)
AdjustmentEvent(调节事件:
在滚动条上移动滑块以调节数值)
ItemEvent(项目事件:
选择项目,不选择项目)
TextEvent(文本事件,文本对象改变)
Event:
事件,就是发生在用户界面上的用户交互行为所产生的一种效果。
EventSource:
产生事件的对象。
Eventhandler:
接收事件对象并对其进行处理的方法。
在Java中对于某种类型的事件XXXEvent,要想接收并处理这类事件,必须定义相应的事件监听器类,该类需要实现针对特定事件的特定接口XXXListener;
事件源中产生事件后,必须注册相应于该类事件的监听器,使用addXXXListener(XXXListener)方法来注册监听器。
下面是一些处理时间的例子:
1)侦察键盘事件
importjava.awt.Event;
importjava.awt.Graphics;
importjava.applet.*;
2)侦察鼠标事件:
importjava.awt.*;
importjava.applet.*;
4、从标准设备中输入若干行英文句子,直到输入"bye"结束,将这些字符串写入文件。
5、编程完成下列功能:
建立两个文件myfiel.txt和myfile2.txt,对文件myfile1.txt输入内容:
“Iamastudent.”,并将其内容拷贝给myfile2.txt。
6、实现一个计算器,界面类似WINDOWS中的界面,包括0~9十个数字、加、减、乘、除四种运算符号和一个用于输入及显示结果的文本框,单击每个按钮都能完成相应的功能。
实验六:
URL网络程序设计
实验目的:
掌握URL类的使用:
URL的概念和编程。
实验要求:
1、掌握网络编程的基本概念。
2、掌握URL类的简单应用。
3、利用URL类与URLConnection类获取资源。
实验内容:
1、用Java实现底层网络通讯
下面的语句利用主机名找到网络中相应的计算机的IP地址并打印出来。
程序中用到了InetAddress类,它主要用来区分计算机网络中的不同节点,即不同的计算机并对其寻址。
编译并运行该程序,写出程序运行结果。
2、获取URL信息,源代码如下:
编译并运行程序,写出程序运行结果。
3、利用URL类获取网络资源,源代码如下:
import.*;
importjava.io.*;
publicclassURLReader{
publicstaticvoidmain(String[]args)throwsException{
编译并运行程序,写出运行结果。
4、利用URLConnection对URL资源的读取,源代码如下:
编译并运行程序,写出运行结果。
5、掌握URLConnection对URL资源的写入,源代码如下:
importjava.io.*;
编译并运行程序,写出运行结果。
实验七:
使用TCP协议的Socket网络程序设计
实验目的:
掌握Socket通讯机制,掌握Socket和ServerSocket类和相关方法。
实验要求:
通过Socket编程,掌握网络应用程序的开发方法;掌握利用Java提供的基本组件进行网络传输;掌握Java提供的多线程机制,异常处理机制和低层对协议的通信机制,通过Socket编程,掌握网络应用程序的开发方法。
实验内容:
1、创建服务器和客户程序,在运行客户程序的计算机上输入的内容,可以在服务器屏幕上看到。
●服务器端源程序
//服务器线程
}
}
catch(Exceptione)
{
System.out.println(e.toString());
}
}
}
●客户端源程序
}
编译并运行程序。
2、使用ServerSocket类和Socket类实现按如下协议通信的服务器端和客户端程序。
服务器程序的处理规则如下:
1)向客户端程序发送VerifyingServer!
。
2)若读口令次数超过3次,则发送IllegalUser!
给客户端,程序退出。
否则向下执行步骤3)。
3)读取客户端程序提供的口令。
4)若口令不正确,则发送PassWordWrong!
给客户端,并转步骤2),否则向下执行步骤5)。
5)发送RegistrationSuccessful!
给客户端程序。
客户端程序的处理规则如下:
1)读取服务器反馈信息。
2)若反馈信息不是VerifyingServer!
,则提示ServerWrong!
,程序退出。
否则向下执行步骤3)
3)提示输入PassWord并将输入的口令发送给服务器。
4)读取服务器反馈信息。
5)若反馈信息是IllegalUser!
,则提示IllegalUser!
,程序退出。
否则向下执行步骤6)
6)若反馈信息是P
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 城市 学院 网络 编程 试验 指导书