毕业设计论文基于socket的网络聊天系统开发与设计管理资料Word文档格式.docx
- 文档编号:21483228
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:20
- 大小:31.59KB
毕业设计论文基于socket的网络聊天系统开发与设计管理资料Word文档格式.docx
《毕业设计论文基于socket的网络聊天系统开发与设计管理资料Word文档格式.docx》由会员分享,可在线阅读,更多相关《毕业设计论文基于socket的网络聊天系统开发与设计管理资料Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
comJava语言概述5
comTCPIP协议7
comSocket编程9
comSwing简介11
com多线程技术介绍12
二系统需求分析15
21需求分析15
22可行性分析16
com社会可行性16
com用户可行性16
com技术可行性16
com经济可行性17
23系统开发环境17
三系统总体设计18
31客户端与服务器的通信18
32客户端与客户端的通信18
33系统的架构模式19
四系统功能模块设计20
41服务器端的设计20
com服务器等待连接线程设计20
com服务器处理客户端信息线程设计21
42客户端设计27
com客户端登录模块设计27
com新用户注册模块设计28
com客户端主界面模块设计28
com点对点通信模块设计29
com一对多通信模块设计29
com点对点文件传输模块设计30
五系统测试32
六结束语32
七参考文献33
一绪论
11课题背景
Internet是目前世界上最大的计算机互联网络它遍布全球并将世界各地不同规模和大小的网络连接成为一个整体目前基于Internet的应用已经非常多了例如网上收发邮件网上购物网上看电影等等这些应用无不在改变人们的生活传统生活方式
目前人们进行信息交流的方式非常多例如电报电话电子邮件等通讯手段但是这些都存在不便利或者费用方面的问题例如电子邮件虽然费用不高甚至可以免费使用但是无法实现即时通讯只能作为一种辅助交流的通讯手段这时开发一套网络聊天系统变得尤为重要通过该系统不但能够实现点对点的交流还能够实现多人同时聊天并且可以相互传递文件资料最主要的是它的费用非常低廉信息处理速度快这样人们才能在这个活动的社会中加强联系从而创建出更多的财富和价值
12课题研究内容及意义
目前已有的一些网络聊天系统已经非常多了例如腾讯的网易的泡泡等等这些网络聊天系统已经非常成熟了不过它们都要求用户必须连接互联网才能够进行通信目前有很多公司由于保密公司并不会让员工连入互联网所以这些软件都将无法使用这是就需要开发一款能够在公司局域网中使用的聊天系统并实现公司内部员工的通讯和交流
该系统分为服务器端和客户端两个不同的程序其中服务器端需要运行在公司的服务器上而客户端需要部署到公司员工的机器上这样员工只需要打开客户端并登录到服务器就可以与局域网上的其他员工彼此之间发送信息并传送资料了
本课题主要研究的是基于Socket的聊天软件此聊天软件分为服务器程序和客户端程序本课题的目标是能实现用户在客户端与服务器端传递信息主要研究开发内容是熟悉系统开发平台探索在此开发平台下利用Socket编程技术多线程开发技术TCPIP协议等进行聊天软件的实际开发具体要实现的目标如下1实现用户的注册登陆修改信息等功能2实现点对点的通信即私聊3实现一对多的通信即群聊4实现点对点的文件传输
13系统相关技术介绍
comJava语言概述
Java语言是目前流行的一种网络编程语言它的面向对象跨平台和分布应用等特点给编程人员带来一种崭新的计算概念使由最初的单纯提供静态信息发展到现在的提供各种各样的动态服务Java不仅能够编写嵌入网页中具有声音和动画功能的小应用程序而且还能够应用于独立的大中型应用程序其强大的网络功能可以把整个Internet作为一个统一的运行平台极大地拓展了传统单机或ClientServer模式应用程序的外延和内涵从1995年正式问世以来Java逐步从一种单纯的高级编程语言发展为一种重要的Internet开发平台并进而引发带动了Java产业的发展和壮大成为当今计算机业界不可忽视的力量和重要的发展潮流与方向
1Java语言的起源
最早Java语言的出现是源于独立开发平台语言的需要当时人们希望能编写出嵌入到各种家用电器等设备的芯片上且易于维护的程序它的出现是为了弥补当时的编程语言例如CC等只能对特定的CPU芯片进行编译的缺陷Java的设计者们就大胆设想让更换芯片的电器还是能够正确运行无需重新编译芯片因此Sun公司于1990年成立了由JamesGosling领导的开发小组开始致力于开发一种可移植的跨平台的语言该语言能生成正确运行于各种操作系统各种CPU芯片上的代码经过他们的精心钻研和努力便促成了Java语言的诞生
2Java语言的发展前景
在2005年的JavaOne开发者大会上JamesGosling做了题为Java技术下一个10年贡献的演讲JamesGosling认为Java技术提高了计算的流动性就如同货币的发明提高了商品的流动性一样无所不在的网络丰富了每个人的信息量就如同可以兑换的货币产生了财富一样由于从前的网络速度是很慢的所以计算被束缚在特定的计算机上而这种情况将一去不复返了
目前全球Java开发人员已经超过450万因此Java社区是一个充满活力和创新精神的团队这正是Java更加繁荣的保障为了保持Java的增长和推进Java社区的参与Sun在JavaOne开发者大会上宣布开放Java核心源代码以鼓励更多的人参与到社团活动中来这是Sun为推进社团发展和维护Java技术兼容性而迈出的重要一步同时也是Java技术在创新和社会进步上继续发挥重要作用的标志
随着Java的开源在未来的十年里Java的应用范围将变得更广数字媒体将是Java的下一个目标同时Java将教育和健康作为未来Java发展过程中的两大重点应用领域
3Java的语法
Java是面向对象的程序设计语言其基本语法和C语言大致相同从一定角度上讲C语言加上面向对象功能就是C那么Java与C有什么区别呢简要地说Java改进了C的一些缺点并增加了一些新的功能从而变得比C更加简单易学编写出来的程序也更具健壮性下面就对它们进行一个简单的比较
Java去掉了C语言的指针如指针使用得当对增强程序的功能有很大帮助一旦使用不当经常会导致死机
Java没有了C语言中的预处理器如ifdefdefine常量声明等都不使用了当然也少了include命令从而也没有头文件h文件和C相比Java不支持多继承的概念目的是为了避免对象和对象之间的关系复杂化
Java增加了垃圾回收机制异常处理和新的限定词等功能这些几乎全部都是基于整个系统和程序本身安全性的考虑
不论在何种平台上Java基本数据类型的大小是不变的
comTCPIP协议
TCPIP是TransmissionControlProtocolInternetProtocol的简写中文译名为传输控制协议互联网络协议该协议是Internet最基本的协议简单地说就是由底层的IP协议和TCP协议组成的TCPIP协议的开发工作始于70年代是用于互联网的第一套协议
1TCPIP参考模型
TCPIP协议的开发研制人员将Internet分为五个层次以便于理解它也称为互联网分层模型或互联网分层参考模型如下所示
物理层对应于网络的基本硬件这也是Internet物理构成即我们可以看得见的硬设备如PC机互连网服务器网络设备等必须对这些硬设备的电气特性作一个规范使这些设备都能够互相连接幷兼容使用
网络接口层它定义了将资料组成正确帧的规程和在网络中传输帧的规程帧是指一串资料它是资料在网络中传输的单位
互联网层本层定义了互联网中传输的信息包格式以及从一个用户通过一个或多个路由器到最终目标的"
信息包"
转发机制
传输层为两个用户进程之间建立管理和拆除可靠而又有效的端到端连接
应用层它定义了应用程序使用互联网的规程
2网间协议IP
Internet上使用的一个关键的底层协议是网际协议通常称IP协议我们利用一个共同遵守的通信协议从而使Internet成为一个允许连接不同类型的计算机和不同操作系统的网络要使两台计算机彼此之间进行通信必须使两台计算机使用同一种"
语言"
通信协议正像两台计算机交换信息所使用的共同语言它规定了通信双方在通信中所应共同遵守的约定
计算机的通信协议精确地定义了计算机在彼此通信过程的所有细节例如每台计算机发送的信息格式和含义在什么情况下应发送规定的特殊信息以及接收方的计算机应做出哪些应答等等
网际协议IP协议提供了能适应各种各样网络硬件的灵活性对底层网络硬件几乎没有任何要求任何一个网络只要可以从一个地点向另一个地点传送二进制数据就可以使用IP协议加入Internet了
如果希望能在Internet上进行交流和通信则每台连上Internet的计算机都必须遵守IP协议为此使用Internet的每台计算机都必须运行IP软件以便时刻准备发送或接收信息
IP协议对于网络通信有着重要的意义网络中的计算机通过安装IP软件使许许多多的局域网络构成了一个庞大而又严密的通信系统从而使Internet看起来好象是真实存在的但实际上它是一种幷不存在的虚拟网络只不过是利用IP协议把全世界上所有愿意接入Internet的计算机局域网络连接起来使得它们彼此之间都能够通信
3传输控制协议TCP
尽管计算机通过安装IP软件从而保证了计算机之间可以发送和接收资料但IP协议还不能解决资料分组在传输过程中可能出现的问题因此若要解决可能出现的问题连上Internet的计算机还需要安装TCP协议来提供可靠的幷且无差错的通信服务
TCP协议被称作一种端对端协议这是因为它为两台计算机之间的连接起了重要作用当一台计算机需要与另一台远程计算机连接时TCP协议会让它们建立一个连接发送和接收资料以及终止连接
传输控制协议TCP协议利用重发技术和拥塞控制机制向应用程序提供可靠的通信连接使它能够自动适应网上的各种变化即使在Internet暂时出现堵塞的情况下TCP也能够保证通信的可靠
众所周知Internet是一个庞大的国际性网络网络上的拥挤和空闲时间总是交替不定的加上传送的距离也远近不同所以传输资料所用时间也会变化不定TCP协议具有自动调整"
超时值"
的功能能很好地适应Internet上各种各样的变化确保传输数值的正确
因此从上面我们可以了解到IP协议只保证计算机能发送和接收分组资料而TCP协议则可提供一个可靠的可流控的全双工的信息流传输服务
综上所述虽然IP和TCP这两个协议的功能不尽相同也可以分开单独使用但它们是在同一时期作为一个协议来设计的幷且在功能上也是互补的只有两者的结合才能保证Internet在复杂的环境下正常运行凡是要连接到Internet的计算机都必须同时安装和使用这两个协议因此在实际中常把这两个协议统称作TCPIP协议
comSocket编程
Socket接口是访问Internet使用得最广泛的方法如果你有一台刚配好TCPIP协议的主机其IP地址com201此时在另一台主机或同一台主机上执行ftpcom201显然无法建立连接因"
com201"
这台主机没有运行FTP服务软件同样在另一台或同一台主机上运行浏览软件如Netscape输入"
httpcom201"
也无法建立连接现在如果在这台主机上运行一个FTP服务软件该软件将打开一个Socket并将其绑定到21端口再在这台主机上运行一个Web服务软件该软件将打开另一个Socket并将其绑定到80端口这样在另一台主机或同一台主机上执行ftpcom201FTP客户软件将通过21端口来呼叫主机上由FTP服务软件提供的Socket与其建立连接并对话而在netscape中输入"
时将通过80端口来呼叫主机上由Web服务软件提供的Socket与其建立连接并对话
在Internet上有很多这样的主机这些主机一般运行了多个服务软件同时提供几种服务每种服务都打开一个Socket并绑定到一个端口上不同的端口对应于不同的服务Socket正如其英文原意那样象一个多孔插座一台主机犹如布满各种插座的房间每个插座有一个编号有的插座提供220伏交流电有的提供110伏交流电有的则提供有线电视节目客户软件将插头插到不同编号的插座就可以得到不同的服务
在Java中所谓Socket通常也称作"
套接字"
用于描述IP地址和端口是一个通信链的句柄应用程序通常通过"
向网络发出请求或者应答网络请求以J2SDK-13为例Socket和ServerSocket类库位于javanet包中ServerSocket用于服务器端Socket是建立网络连接时使用的在连接成功时应用程序两端都会产生一个Socket实例操作这个实例完成所需的会话对于一个网络连接来说套接字是平等的并没有差别不因为在服务器端或在客户端而产生不同级别不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的
重要的SocketAPIcomet继承于comct有八个构造器其方法并不多下面介绍使用最频繁的三个方法其它方法可以参见JDK-13文档
Accept方法用于产生"
阻塞"
直到接受到一个连接并且返回一个客户端的Socket对象实例"
是一个术语它使程序运行暂时"
停留"
在这个地方直到一个会话产生然后程序继续通常"
是由循环产生的
getInputStream方法获得网络连接输入同时返回一个InputStream对象实例
getOutputStream方法连接的另一端将得到输入同时返回一个OutputStream对象实例注意其中getInputStream和getOutputStream方法均可能会产生一个IOException它必须被捕获因为它们返回的流对象通常都会被另一个流对象使用
服务器使用ServerSocket监听指定的端口端口可以随意指定由于1024以下的端口通常属于保留端口在一些操作系统中不可以随意使用所以建议使用大于1024的端口等待客户连接请求客户连接后会话产生在完成会话后关闭连接
客户端使用Socket对网络上某一个服务器的某一个端口发出连接请求一旦连接成功打开会话会话完成后关闭Socket客户端不需要指定打开的端口通常临时的动态的分配一个1024以上的端口
Socket接口是TCPIP网络的APISocket接口定义了许多函数或例程程序员可以用它们来开发TCPIP网络上的应用程序要学Internet上的TCPIP网络编程必须理解Socket接口Socket接口设计者最先是将接口放在Unix操作系统里面的如果了解Unix系统的输入和输出的话就很容易了解Socket了网络的Socket数据传输是一种特殊的IOSocket也是一种文件描述符Socket也具有一个类似于打开文件的函数调用Socket该函数返回一个整型的Socket描述符随后的连接建立数据传输等操作都是通过该Socket实现的
comSwing简介
Swing是一个用于开发Java应用程序用户界面的开发工具包它以抽象窗口工具包AWT为基础使跨平台应用程序可以使用任何可插拔的外观风格Swing开发人员只用很少的代码就可以利用Swing丰富灵活的功能和模块化组件来创建优雅的用户界面
Swing的产生主要原因就是AWT不能满足图形化用户界面发展的需要AWT设计的初衷是支持开发小应用程序的简单用户界面例如AWT缺少剪贴板打印支持键盘导航等特性而且原来的AWT甚至不包括弹出式菜单或滚动窗格等基本元素
此外AWT还存在着严重的缺陷人们使AWT适应基于继承的具有很大伸缩性的事件模型基于同位体的体系结构也成为其致命的弱点
随着发展的需要Swing出现了Swing组件几乎都是轻量组件与重量组件相比没有本地的对等组件不像重量组件要在它们自己的本地不透明窗体中绘制轻量组件在它们的重量组件的窗口中绘制
这一讲我们讲一下基本的Swing组件使用方法和使用Swing组件创建用户界面的初步方法
Swing是由100纯Java实现的Swing组件是用Java实现的轻量级light-weight组件没有本地代码不依赖操作系统的支持这是它与AWT组件的最大区别由于AWT组件通过与具体平台相关的对等类Peer实现因此Swing比AWT组件具有更强的实用性Swing在不同的平台上表现一致并且有能力提供本地窗口系统不支持的其它特性
Swing采用了一种MVC的设计范式即"
模型-视图-控制"
Model-View-Controller其中模型用来保存内容视图用来显示内容控制器用来控制用户输入
Swing外观感觉采用可插入的外观感觉PluggableLookandFeelPLF
在AWT组件中由于控制组件外观的对等类与具体平台相关使得AWT组件总是只有与本机相关的外观Swing使得程序在一个平台上运行时能够有不同的外观用户可以选择自己习惯的外观
com多线程技术介绍
多线程是这样一种机制它允许在程序中并发执行多个指令流每个指令流都称为一个线程彼此间互相独立
线程又称为轻量级进程它和进程一样拥有独立的执行控制由操作系统负责调度区别在于线程没有独立的存储空间而是和所属进程中的其它线程共享一个存储空间这使得线程间的通信远较进程简单
多个线程的执行是并发的也就是在逻辑上同时而不管是否是物理上的同时如果系统只有一个CPU那么真正的同时是不可能的但是由于CPU的速度非常快用户感觉不到其中的区别因此我们也不用关心它只需要设想各个线程是同时执行即可
多线程和传统的单线程在程序设计上最大的区别在于由于各个线程的控制流彼此独立使得各个线程之间的代码是乱序执行的由此带来的线程调度同步等问题
1在Java中实现多线程
我们不妨设想为了创建一个新的线程我们需要做些什么很显然我们必须指明这个线程所要执行的代码而这就是在Java中实现多线程我们所需要做的一切
真是神奇Java是如何做到这一点的通过类作为一个完全面向对象的语言Java提供了类comad来方便多线程编程这个类提供了大量的方法来方便我们控制自己的各个线程我们以后的讨论都将围绕这个类进行
那么如何提供给Java我们要线程执行的代码呢让我们来看一看Thread类Thread类最重要的方法是run它为Thread类的方法start所调用提供我们的线程所要执行的代码为了指定我们自己的代码只需要覆盖它
方法一继承Thread类覆盖方法run我们在创建的Thread类的子类中重写run加入线程所要执行的代码即可下面是一个例子
publicclassMyThreadextendsThread
intcount1number
publicMyThreadintnum
numbernum
Sycomtln"
创建线程"
number
publicvoidrun
whiletrue
Sycomtln"
线程"
number"
计数"
count
ifcount6return
publicstaticvoidmainStringargs[]
forinti0i〈5inewMyThreadi1start
这种方法简单明了符合大家的习惯但是它也有一个很大的缺点那就是如果我们的类已经从一个类继承如小程序必须继承自Applet类则无法再继承Thread类这时如果我们又不想建立一个新的类应该怎么办呢
我们不妨来探索一种新的方法我们不创建Thread类的子类而是直接使用它那么我们只能将我们的方法作为参数传递给Thread类的实例有点类似回调函数但是Java没有指针我们只能传递一个包含这个方法的类的实例
那么如何限制这个类必须包含这一方法呢当然是使用接口虽然抽象类也可满足但是需要继承而我们之所以要采用这种新方法不就是为了避免继承带来的限制吗
Java提供了接口comable来支持这种方法
方法二实现Runnable接口
Runnable接口只有一个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 论文 基于 socket 网络 聊天 系统 开发 设计 管理 资料