计算机网络课程设计报告

点赞:17767 浏览:80575 近期更新时间:2024-01-25 作者:网友分享原创网站原创

计算机网络课程设计报告

题目:多线程怎么写作器在线多人聊天室

院系:计算机科学与工程学院

班级:计算机应用044班

姓名:梁小冰

学号:200510714412

指导教师:陈素琴

设计时间:2007年1月28日

报告提交时间:2007年3月4日

多线程怎么写作器在线多人聊天室

(基于ja技术网络课程设计)

1.需求分析:

Ja语言简介

一、Ja的由来

当1995年SUN推出Ja语言之后,全世界的目光都被这个神奇的语言所吸引.Ja语言其实最是诞生于1991年,起初被称为O语言,是SUN公司为一些消费性电子产品而设计的一个通用环境.他们最初的目的只是为了开发一种独立于平台的软件技术,而且在网络出现之前,O可以说是默默无闻,甚至差点夭折.但是,网络的出现改变了O的命运.

在Ja出现以前.Inter上的信息内容都是一些乏味死板的HTML文档.这对于那些迷恋于WEB浏览的人们来说简直不可容忍.他们迫切希望能在WEN中看到一些交互式的内容,开发人员也极希望能够在WEB上创建一类无需考虑软硬件平台就可以执行的应用程序,当然这些程序还要有极大的安全保障.对于用户的这种要求,传统的编程语言显得无能为力,面SUN的工程师敏锐地察觉到了这一点,从1994年起,他们开始将O技术应用于WEB上,并且开发出了HotJa的第一个版本.当SUN公司1995年正式以Ja这个名字推出的时候,几乎所有的WEB开发人员都想到:噢,这正是我想要的.于是Ja成了一颗耀眼的明星,丑小鸭一下了变成了白天鹅.


二、Ja的定义

Ja是一种简单的,面象对象的,分布式的,解释的,键壮的安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言.Ja的开发环境有不同的版本,如sun公司的JaDevelopersKit,简称JDK.后来微软公司推出了支持Ja规范的MicrosoftVisualJ++Ja开发环境,简称VJ++.

三、Ja的特点

1.平台无关性

平台无关性是指Ja能运行于不同的平台.Ja引进虚拟机原理,并运行于虚拟机,实现不同平台的Ja接口之间.使用Ja编写的程序能在世界范围内共享.Ja的数据类型与机器无关,Ja虚拟机(JaVirtualMachine)是建立在硬件和操作系统之上,实现Ja二进制代码的解释执行功能,提供于

不同平台的接口的.

2.安全性

Ja的编程类似C++,学习过C++的读者将很快掌握Ja的精髓.Ja舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针侵入系统.Ja对程序提供了安全管理器,防止程序的非法访问.

3.面向对象

Ja吸取了C++面向对象的概念,将数据封装于类中,利用类的优点,实现了程序的简洁性和便于维护性.类的封装性,继承性等有关对象的特性,使程序代码只需一次编译,然后通过上述特性反复利用.程序员只需把主要精力用在类和接口的设计和应用上.Ja提供了众多的一般对象的类,通过继承即可使

用父类的方法.在Ja中,类的继承关系是单一的非多重的,一个子类只有一个父类,子类的父类又有一个父类.Ja提供的Object类及其子类的继承关系如同一棵倒立的树形,根类为Object类,Object类功能强大,经常会使用到它及其它派生的子类.

4.分布式

Ja建立在扩展TCP/IP网络平台上.库函数提供了用HTTP和FTP协议传送和接受信息的方法.这使得程序员使用网络上的文件和使用本机文件一样容易.

5.键壮性

Ja致力于检查程序在编译和运行时的错误.类型检查帮助检查出许多开发早期出现的错误.Ja自已操纵内存减少了内存出错的可能性.Ja还实现了真数组,避免了覆盖数据的可能.这些功能特征大大提高了开发Ja应用程序的周期.Ja提供:Null指针检测,数组边界检测,异常出口,Bytecode校验.

四、Ja与C/C++语言

Ja提供了一个功能强大语言的所有功能,但几乎没有一点含混特征.C++安全性不好,但C和C++被大家接受,所以Ja设计成C++形式,让大家很容易学习.

Ja去掉了C++语言的许多功能,让Ja的语言功能很精炼,并增加了一些很有用的功能,如自动收集碎片.

Ja去掉了以下几个C和C++功能:指针运算结构typedefs#define 需要释放内存这将减少了平常出错的50%.而且,Ja很小,整个解释器只需215K的RAM.

面象对象:Ja实现了C++的基本面象对象技术并有一些增强,(为了语言简单,删除了一些功能).Ja处理数据方式和用对象接口处理对象数据方式一样.

五.Ja与Inter

我们知道,早先的仅可以传送文本和图片,Ja的出现实现了互动的页面,是一次伟大的革命.Ja并不是为Inter,WWW而设计的,它也可以用来编写独立的应用程序.Ja是一种面向对象语言.Ja语言类似于C++语言,所以已熟练掌握C++语言的编程人员,再学习Ja语言就容易得多!Ja

程序需要编译.实际上有两种Ja程序:一种Ja应用程序是一个完整的程序,如Web浏览器.一种Ja小应用程序是运行于Web浏览器中的一个程序.

Ja程序和它的浏览器HotJa,提供了可让你的浏览器运行程序的方法.你能从你的浏览器里直接播放声音.你还能播放页面里的动画.Ja还能告诉你的浏览器怎样处理新的类型文件.当我们能在2400baud线上传输视频图象时,HotJa将能显示这些视频.

当今Inter的一大发展趋势是电子商务,而Inter的安全问题是必须解决的问题,通常大的部门应设置防火墙,阻止非法侵入.电子商务是当今的热门话题,然而传统的编程语言难以胜任电子商务系统,电子商务要求程序代码具有基本的要求:安全,可靠,同时要求能与运行于不同平台的机器的全世界客户开展业务.Ja以其强安全性,平台无关性,硬件结构无关性,语言简洁同时面向对象,在网络编程语言中占据无可比拟的优势,成为实现电子商务系统的首选语言.

Ja程序被放置在Inter怎么写作器上,当用户访问怎么写作器时,Ja程序被下载到本地的用户机上,由浏览器解释运行.

2.概要设计:整体安全策略布署:

基于ja技术开发的一个多线程怎么写作器,多人在线聊天室的.

网络编程的基本模型就是客户机到怎么写作器模型.简单的说就是两个进程之间相互通讯,然后其中一个必须提供一个固定的位置,而另一个则只需要知道这个固定的位置.并去建立两者之间的联系..然后完成数据的通讯就可以了.这里提供固定位置的通常称为怎么写作器,而建立联系的通常叫做客户端.基于这个简单的模型,就可以进入网络编程.

创建该类的一个实力对象并提供一个端口资源你就建立了一个固定位置可以让其他计算机来访问你.ServerSocketserver等于newServerSocket(1400).

端口是为了唯一标识每台计算机唯一怎么写作的.另外端口号是从0~65535之间的,前1024个端口已经被Tcp/Ip作为保留端口,因此一般自己分配的端口是1024个之后的到65535任意的一个端口.

Ja同样提供了一个Socket对象来对其进行支持.只要客户方创建一个Socket的实例对象进行支持就可以了.Socketclient等于newSocket(IAddress.getLocalHost(),1400),客户机必须知道有关怎么写作器的IP地址.对于着一点Ja也提供了一个相关的类IAddress该对象的实例必须通过它的静态方法来提供.它的静态方法主要提供了得到本机IP和通过名字或IP直接得到IAddress的方法.

上面的方法基本可以建立一条连线让两台计算机相互交流,所以也必须导入ja.io这个包.ja的IO操作也不复杂.它提供了针对于字节流和Unicode的读者和写者,然后也提供了一个缓冲用于数据的读写.I/O操作总是和网络编程息息相关的.因为底层的网络是继续数据的.除非远程调用,处理问题的核心在执行上.否则数据的交互还是依赖于I\O操作的.

BufferedReaderin等于newBufferedReader(newInputStreamReader(server.getInputStream())), PrintWriterout等于newPrintWriter(server.getOutputStream()),

上面两句就是建立缓冲并把原始的字节流转变为Unicode可以操作,而原始的字节流来源于Socket的两个方法.getInputStream()和getOutputStream()方.分别用来得到输入和输出.那么现在有了基本的模型和基本的操作工具,这样在这个基础上就可以做一个简单的Socket编程,实现聊天室功能.

3.详细设计:

//怎么写作器端的多线程ja源代码

importja.io.*,

importja..*,

/*

@author罗毅华

@version1.0copyright2006-2007

*/

classJaSocketServerextendsThread

{

//定义一个server属性

ServerSocketserver,

//定义一个不带参数的构造器

publicJaSocketServer()

{

try

{//新创建一个ServerSocket,端口为1400

server等于newServerSocket(1400),

}

catch(IOExceptione)

{//如果发生异常,对IO进行异常处理

System.out.println("不能建立怎么写作"),

System.exit(0),

}

System.out.println("现在socket怎么写作将开始"),

this.start(),

}

//定义一个运行方法

publicvoidrun()

{

try

{

while(true)

{

Socketclient等于server.accept(),

Servicess等于newService(client),

}

}

catch(IOExceptione)

{

System.out.println("不能提供怎么写作"),

System.exit(1),

}

}

publicstaticvoidmain(String[]args)

{

Stringdata,

BufferedReaderKeyInput,

newJaSocketServer(),

}

}

classServiceextendsThread

{

Stringdata,

BufferedReaderInputS,

计算机网络课程设计报告参考属性评定
有关论文范文主题研究: 关于课程设计的论文范文文献 大学生适用: 研究生论文、电大毕业论文
相关参考文献下载数量: 50 写作解决问题: 怎么写
毕业论文开题报告: 论文模板、论文题目 职称论文适用: 期刊发表、初级职称
所属大学生专业类别: 怎么写 论文题目推荐度: 最新题目

PrintStreamOutputS,

SocketClient,

publicService(SocketClientSocket)

{

Client等于ClientSocket,

try

{

InputS等于newBufferedReader(newInputStreamReader(Client.getInputStream())),

OutputS等于newPrintStream(Client.getOutputStream()),

}

catch(IOExceptione)

{

System.out.println("不能连接客户端!"),

return,

}

this.start(),

}

publicvoidrun()

{

//将当前怎么写作线程打印出来

//比较每次一个新的客户端连接上来的时候的线程是否相同

System.out.println(this),

try

{

while(true)

{

data等于InputS.readLine(),

if(data等于等于null)break,

else

{

OutputS.println(data),

System.out.println("从客户端:"+data),

}

}

}

catch(IOExceptione)

{

System.out.println("读数据出现错误"),

}

try

{

Client.close(),

}

catch(IOExceptione)

{

System.out.println("不能关闭线程--!"),

}

}

}

//客户端的ja源程序

importja.io.*,

importja..*,

/*

@author罗毅华

@version1.0copyright2006-2007

*/

publicclassJaSocketClient

{

publicstaticvoidmain(String[]args)

{

Stringdata,

SocketClient,

BufferedReaderInputS,

BufferedReaderKeyS,

PrintStreamOutputS,

inti等于0,

try

{

Client等于newSocket("localhost",1400),

InputS等于newBufferedReader(newInputStreamReader(Client.getInputStream())),

OutputS等于newPrintStream(Client.getOutputStream()),

KeyS等于newBufferedReader(newInputStreamReader(System.in)),

}

catch(IOExceptione)

{

System.out.println("不能连接怎么写作器"),

return,

}

try

{

while(true)

{

data等于KeyS.readLine(),

OutputS.println(data),

System.out.println("ECHO从怎么写作器."+InputS.readLine()),

}

}

catch(Exceptione)

{

System.out.println("IO出现异常"),

}

try

{

System.out.println("现在将结束这个这次连接"),

Client.close(),

}

catch(IOExceptione)

{

System.out.println("系统不能关闭socket"),

}

}

}

3.硬件:cpu:200MHz以上,内存128以上

4.软件:jdk1.4以上版本(本程序是在jdk1.6版本调试的)

Editplus2

5.调试分析:

1)运行怎么写作器端:

怎么写作器运行,在等待客户端的连接上来

2)当运行客户端程序时候,怎么写作器端就会自动打开一条线程和客户端连接.

3)在客户端输入一串字符,"你好"立刻从怎么写作器端反馈信息

4)在同时,在怎么写作器端,可以看见,从客户端发来的信息.

5)再开多一个客户端程序,怎么写作器端又会开多一条线程对应该客户端的连接.

6)同理,在另外一个客户端发送数据到怎么写作器端,再怎么写作器端也能接受到同样信息,并能显示是那个用户发送过来的信息.

6.课程设计总结:课程设计过程的收获,遇到问题,遇到问题解决问题过程的思考.

这次网络课程设计中,基于ja技术的平台写的多线程怎么写作器件,在课程设计中,查阅了大量得ja得API文档,socket接口编程的,并通过这次课程设计,多网络编程更加熟悉和熟练了ja的编程.并对ja的类,匿名内部类的运用更加熟悉.对网络数据传输更加熟悉.