《基于socket网络聊天系统毕业论文.docx》由会员分享,可在线阅读,更多相关《基于socket网络聊天系统毕业论文.docx(32页珍藏版)》请在第一文库网上搜索。
1、基于socket网络聊天系统毕业论文绪 论2选题的背景和意义2所做的主要工作2第一章 系统所涉及到的技术31.1 Java语言概述31.3 TCP/IP 协议51.4 Swing 简介71.5 多线程技术介绍8第二章网络聊天系统分析102.1 系统功能需求102.2 可行性分析112.3.1 社会可彳亍性112.3.2 用户可行性112.3.3 技术可行性112.3.4 经济可行性122.3系统开发环境12第二童系统设计重以K3.1 系统数据库设计133.1.1 数据库概念设计131.1 2客户端与服务器的通信133.3 客户端与客户端的通信143.4 C/S的架构模式143.5 系统的功能模
2、块设计14第四章.各功能模块设计154.1 服务器端的设计154.1.1 服务器等待连接线程设计154.1.2 服务器处理客户端信息线程设计164.2 客户端设计20421客户端登录模块设计204.2.1 新用户注册模块设计214.2.2 2.3客户端主界面模块设计274.2.3 点对点通信模块设计224.2.4 一对多通信模块设计224.2.5 点对点文件传输模块设计23第五章.系统测试25结束语错误!未定义书签。自与日.!才、又E1342 参考文献26附录:基于SOCKET网络聊天系统源代码27选题的背景和意义在Internet的计算机网络大潮中,人们已渐渐习惯于在网络上购物、聊天、看电影
3、、交朋友等,人们的生活也是离不开网络。我们每天都在各种各样的网络应用中满足自己的需求。慢慢的,网络也无时无刻的改变人们的生活。当前人们进行信息交流的方式非常多,例如电报、电话、电子邮件等通讯手段。但是这些都存在不便利或者费用方面的问题,例如电子邮件,虽然费用不高,甚至可以免费使用,但是无法实现即时通讯,只能作为一种辅助交流的通讯手段。这时开发一套网络聊天系统变得尤为重要,通过该系统不但能够实现点对点的交流,还能够实现多人同时聊天,并且可以相互传递文件资料。最主要的是,它的费用非常低廉,信息处理速度快,这样人们才能在这个活动的社会中加强联系,从而创建出更多的财富和价值。现如今已有很多的网络聊天系
4、统,例如腾讯的QQ、微信、阿里旺旺等等。这些网络聊天系统已经非常成熟了,不过它们都要求用户必须连接互联网才能够进行通信。所以根据用途的不同,我想开发的这一套网络聊天系统是在一个局域网中实现通信的,这样可以防止网络中的一些窥听,对信息安全性要求高的企业或是私人工作环境是一个很好的解决方案。该系统分为server端和客户端两部分组成,server端需要运行在服务器上,而客户端需要安装在用于通信的PC上,用户只需通过客户端连接至服务器上,就可以实现在局域网内的即时通信了。所做的主要工作本课题主要研究的是基于Socket的聊天软件,对于这个聊天软件的设计是分为服务器程序和客户端程序,本课题的目标是能实
5、现用户在客户端与服务器端传递信息。主要研究开发内容是:熟悉系统开发平台,探索在此开发平台下,利用Socket编程技术、多线程开发技术、TCP/IP协议等进行聊天软件的实际开发。具体要实现的目标如下:(1)实现用户的注册、登陆、修改信息等功能(2)实现点对点的通信,即私聊(3)实现一对多的通信,即群聊(4)实现点对点的文件传输。第一章系统所涉及到的技术1.1 Java语言概述JAVA是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由升阳(Sun Microsystems)公司的詹姆斯高斯林(James Gosling)等人于1990年代初开发。它最初被命名为Oak,目标设定在家用电器等小型
6、系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了 Oak在计算机网络上的广阔应用前景,于是改造了 Oak,在1995年5月23日以“Java”的名称正式发布了。Java伴随着互联网的迅猛发展而发展,成为当今计算机业界不可忽视的力量和重要的发展潮流与方向。(1) Java语言的起源最早Java语言的出现是源于独立开发平台语言的需要,当时人们希望能编写出嵌入到各种家用电器等设备的芯片上、且易于维护的程序。它的出现是为了弥补当时的编程语言,例如C、C
7、+等只能对特定的CPU芯片进行编译的缺陷。Java的设计者们就大胆设想让更换芯片的电器还是能够正确运行,无需重新编译芯片,因此Sun公司于1990年成立了由James Gosling领导的开发小组,开始致力于开发一种可移植的、跨平台的语言,该语言能生成正确运行于各种操作系统、各种CPU芯片上的代码。经过他们的精心钻研和努力,便促成了 Java语言的诞生。(2) Java语言的发展前景在2005年的Java One开发者大会上,James Gosling做了题为“Java技术下一个10年贡献”的演讲,James Gosling认为,Java技术提高了计算的“流动性。就如同货币的发明提高了商品的流
8、动性一样。无所不在的网络丰富了每个人的信息量,就如同可以兑换的货币产生了财富一样。由于从前的网络速度是很慢的,所以计算被束缚在特定的计算机上,而这种情况将一去不复返了。目前,全球Java开发人员已经超过450万,因此Java社区是一个充满活力和创新精神的团队,这正是Java更加繁荣的保障。为了保持Java的增长和推进Java社区的参与,Sun在Java One开发者大会上宣布开放Java核心源代码,以鼓励更多的人参与到社团活动中来,这是Sun为推进社团发展和维护Java技术兼容性而迈出的重要一步,同时也是Java技术在创新和社会进步上继续发挥重要作用的标志。随着Java的开源,在未来的十年里,
9、Java的应用范围将变得更广。数字媒体将是Java的下一个目标,同时,Java将教育和健康作为未来Java发展过程中的两大重点应用领域。(3) Java的语法Java是面向对象的程序设计语言,其基本语法和C语言大致相同。从一定角度上讲,C语言加上面向对象功能就是C+。那么Java与C+有什么区别呢?简要地说,Java改进了 C+的一些缺点,并增加了一些新的功能,从而变得比C+更加简单、易学,编写出来的程序也更具健壮性。下面就对它们进行一个简单的比较。Java去掉了 C语言的指针。如指针使用得当,对增强程序的功能有很大帮助,一旦使用不当,经常会导致死机。Java没有了 C语言中的预处理器。如#迷
10、(1城、#define,常量声明等都不使用了,当然也少了用nclude命令,从而也没有头文件(.h文件)。和C+相比,Java不支持多继承的概念,目的是为了避免对象和对象之间的关系复杂化。Java增加了垃圾回收机制、异常处理和新的限定词等功能。这些几乎全部都是基于整个系统和程序本身安全性的考虑。不论在何种平台上,Java基本数据类型的大小是不变的。1.2 Socket 编程Socket接口是访问Internet使用得最广泛的方法。如果你有一台刚配好TCP/IP协议的主机,其IP地址是192. 168. 0. 1,此时在另一台主机或同一台主机上执行ftpl92. 168. 0. 1,显然无法建立
11、连接。因 192. 168.0. 1这台主机没有运行FTP服务软件。同样,在另一台或同一台主机上运行浏览软件 如Netscape,输入http:192. 168. 0. 1,也无法建立连接。现在,如果在这台主机上运行一个FTP服务软件(该软件将打开一个Socket,并将其绑定到21端口),再在这台主机上运行一个呢b服务软件(该软件将打开另一个Socket,并将其绑定到80端口)。这样,在另一台主机或同一台主机上执行ftp192. 168. 0. 1,FTP客户软件将通过21端口来呼叫主机上由FTP服务软件提供的Socket,与其建立连接并对话。而在netscape中输入“http:192. 1
12、68. 0. 1时,将通过80端口来呼叫主机上由Web服务软件提供的Socket,与其建立连接并对话。在Internet上有很多这样的主机,这些主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,像一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电,有的提供110伏交流电,有的则提供有线电视节目。客户软件将插头插到不同编号的插座,就可以得到不同的服务。在Java中所谓Socket通常也称作套接字,用于描述IP地址和端口,是一个通信链的句柄。应用程序
13、通常通过套接字向网络发出请求或者应答网络请求。,Socket 和 ServerSocket 类库位于 java, net 包中。ServerSocket 用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过Socketlmpl类及其子类完成的。重要的 Socket API: java. net. Socket 继承于 java. lang. Object,有
14、八个构造器,其方法并不多,下面介绍使用最频繁的三个方法。Accept方法用于产生阻塞,直到接受到一个连接,并且返回一个客户端的Socket对象实例。阻塞是一个术语,它使程序运行暂时停留在这个地方,直到一个会话产生,然后程序继续;通常阻塞是由循环产生的。getTnputStream方法获得网络连接输入,同时返回一个InputStream对象实例。getOutputStream方法连接的另一端将得到输入,同时返回一个Outputstream 对象实例。注意:其中 getlnputStream 和 getOutputStream 方法均可能会产生一个lOException,它必须被捕获,因为它们返回
15、的流对象,通常都会被另一个流对象使用。服务器,使用ServerSocket监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口),等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socketo客户端不需要指定打开的端口,通常临时的、动态的分配一个1024以上的端口。Socket接口是TCP/IP网络的API, Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学