基于JAVA套接字的多点互动通讯的.doc
《基于JAVA套接字的多点互动通讯的.doc》由会员分享,可在线阅读,更多相关《基于JAVA套接字的多点互动通讯的.doc(18页珍藏版)》请在沃文网上搜索。
1、目 录1前言21.1 课题选择背景21.2 即时通讯的特点21.3 即时通讯系统的发展22系统需求分析33系统可行性分析34多点互动通讯系统原理34.1 套接字通讯34.2 数据报通信44.3 多线程编程45总体设计45.1 功能设计55.2 界面设计66详细设计66.1 服务器端详细设计66.2 客户端详细设计107系统测试127.1 服务器端测试127.2 客户端测试15结束语16致谢16参考文献17基于JAVA套接字的实现多点互动通讯系统摘要:在计算机网络技术飞速发展的今天,网络即时通信倍受人们的喜爱,网络即时通信比起传统的通信方式会来得更加的方便快捷。同时,网络即时通信能够实现实时交互
2、,并且有资费低廉的优点。它的出现促进了人们之间的交流,成为人们生活中的一部分。本着学习的目的,开发了这套多点互动通讯系统,来实现多个点的用户之间的相互通讯。系统通过Java套接字实现,套接字在所有的网络操作系统中都是必不可少的,而且在所有的网络应用程序中也是必不可少的。它是网络通信中应用程序对应的进程和网络协议之间的接口。文章就系统的编写过程做出细致的介绍。关键词:即时通信;多点互动通讯系统;Java套接字Multiple-point Communication System based on JAVA Socket TechniquesXXX(Electronic & Information
3、 Engineering Department, Supervisor: XXX)Abstract: With the fast-developing of computer Internet technology, people favour more about instant communication on Internet. Compared with the traditional communication methods , it is of great advantage of being convenient and quickly, meanwhile, the Net-
4、work instant communication can realize dynamic interact between computer and users , moreover, it wont cost a lot . Instant telecommunication is gradually becoming a part of people life, for that it really promotes mutual communication. For the purpose of study, I developed a set of Multiple-point c
5、ommunication system, which tends to accomplish different users communication with each other. The system through the Java socket realize, sockets in all the network operating system is indispensable, and in all the network application is also essential. It is of network communication application cor
6、responding process and network protocol of the interface between. Follows are the detailed introduction for my system.Keywords: Instant communication; Mutiple-point communication system; Java socket1前言众所周知,现在网络正在飞速的发展和不断的完善成熟。人们通过网络聊天工具来进行交流、联系也变得越来越普遍。本课题研究的就是一个即时通讯系统:多点互动通讯的系统,本系统需要用到Java语言来进行编写。1
7、.1 课题选择背景在当今,网络通讯技术迅猛发展。通过即时通讯方式进行交流也变成家常便饭,备受人们喜爱。即时通讯工具可以实现远距离的交流,促进人们之间的联系,使远距离的快速通讯成为现实,加快了消息传播的速度。把世界的所有地方和角落联系在一起,变成了一个地球村。如今常用的即时通讯工具有很多,例如ICQ。我们知道ICQ是最早的即时通讯软件,也是现在最流行的即时通讯工具之一。ICQ是“I seek you”的谐音。翻译过来就是“我在找你”的意思。无论你人在何地何处,只要记得想联系的人的号码,上网打开ICQ,就能随心所欲的交流。目前有种类众多的即时通讯系统,能实现的功能也较为丰富。本课题目的是为了实现多
8、点的通讯,多点实现彼此之间可靠地交流。提高一定的安全和工作效率。本课题能使自己熟练掌握即时通讯的原理和机制,为自己以后网络通讯编程打下坚实的基础。此系统分为客户端部分、服务器部分。能够支持局域网和因特网。通过连接网络,就能实现用户之间的联系。大大提高了多个点的用户之间的通讯和办事效率。QQ、MSN等都是我们身边的公共通讯系统,针对性不强。并且想要聊天的对象、聊天的内容不好控制。如果使用在在局域网内部的话。工作的效率和安全都有可能会降低。然而该系统是放在自己的服务器上运行的。由自己内部的人员管理。这样能很好的解决效率和安全的问题。即时通讯增加了更多的互动性。当人们在表达自己的想法、意见时。总是采
9、用你来我往的方式。此方法带来了更多的互动。通过使用即时通讯系统,人们不再需要借助打电话、发短信等方式就能在线实时地交流工作。1.2 即时通讯的特点即时通讯是指能够即时发送和接收互联网消息等的业务。即时通讯是即时的。1大部分的即时通讯服务提供了presence awareness的特性显示联络人名单,联络人是否在在线与能否与联络人交谈。在早期的即时通讯程序中,使用者输入的每一个字符都会即时显示在双方的银幕,且每一个字符的删除与修改都会即时的反应在银幕上。这种模式比起使用e-mail更像是电话交谈,充分体现了其实时特性。在现在的即时通讯程序中,为了画面的完整美观和交流方便,交谈中的另一方通常只会在
10、本地端按下送出键(Enter或是Ctrl+Enter)后才会看到信息。1.3 即时通讯系统的发展20世纪70年代早期,柏拉图系统(PLATO system)是一个比较早的即时通讯形式。80年代,UNIX/Linux的即时交谈被使用在工程师与学术界。当时有一定的影响力。到了90年代,即时通讯可以跨越操作系统平台进行交流,1996年11月,ICO的出现标志着首个非UNIX/Linux使用者用于因特网的即时通讯的系统软件。ICO应用很广泛,它的诞生促成了现在许多流行使用的即时通讯软件。ICO是由几个年轻的以色列人于1996年开发出来,考虑到无人投资,ICO公司决定提供全球互联网用户免费下载使用软件。
11、随着时间的推移,使用此软件的人数以每月100万的速度增加。成为许多看重其巨大商业广告价值的大公司争着购买的对象。1998年,ICO公司把这有巨大发展潜力的软件和用户一起以2.87亿美元的天价卖给了AOL。如今ICO有1亿多使用者,它的主要市场是在欧洲和美洲,可以说它是世界上最大的即时通讯系统。2系统需求分析随着计算机技术、网络技术的飞速发展,网络早已经是我们生活中必不可少的一部分。人们通过网络方式获取信息的需求越来越高。也对获取信息是否方便快捷提出了更高的要求,在这种社会氛围下促进了即时通讯系统软件的发展,也因为即时通讯的方便快捷的优点使得其越来越受到人们的青睐。近些年,用户使用即时通讯系统软
12、件的频率越来越高,它已经取代了e-mail在人们生活中的重要性。成为了用户之间交流、联系的最流行的软件。因此,对通讯系统软件的研究和开发很有很强的实际应用价值。本系统有两大部分组成。一个是服务器端程序:服务器端程序能够不断的监听是否有客户端连接,服务器采用的是MYSQL数据库来存储用户数据;另一个是客户端程序:客户端程序是在实际用户机子上运行的程序。有注册、登陆等功能。能够实现用户之间的即时通讯。本系统在Java平台下进行调试和开发。3系统可行性分析本系统着力完成用户和用户之间的信息交流,实现多点的通讯。从硬件设备上说,只需一台有固定IP地址的计算机被当作服务器来运行服务器程序。几台电脑运行客
13、户端程序,因为现在自己每个同学几乎都有一台电脑,所以要满足这要求一点也不困难。从开发时间上说,完成此系统需要几周时间。在几周时间内完成自己完全可以接受。从软件上说,开发此系统需要用到软件都是免费使用的,例如:Java平台、Eclipse调试环境等。所以开发此系统完全是可行的。4多点互动通讯系统原理4.1 套接字通讯套接字的英文名为“socket”。套接字允许程序员把网络连接当成一个流,并向这个流读写字节。2我们都知道在Java中有两个重要的类Socket和ServerSocket。Socket和ServerSocket都被放在包中。通过这两个类就能完成客户端与服务器、甚至是客户端与客户端的即时
14、通讯。首先通过ServerSocket类在服务器某固定端口等待连接,当有Socket请求连接到此服务器的此端口时,就完成Socket连接,然后相互之间就可以发送和接收信息。4.1.1 Socket类Socket类是Java用来实现客户端TCP操作的基础类,在Java编程中,一切与TCP有关的操作,包括连接的建立、传输、连接关闭及Socket选项的设置都由Socket类负责,这个类本身使用直接代码通过主机操作系统的本地TCP栈进行通信。Socket类的消息收发都是通过流来实现。通过new Socket()创建需要连接的指定的服务器host和端口号port的对象,并向服务器发送连接请求。通过clo
15、se()方法关闭已建立的套接字。4.1.2 ServerSocket类ServerSocket类能够在服务器端指定的端口监听。ServerSocket类通过new ServerSocke()能实现等待某客户端的连接请求的功能。跟Socket一样,也是通过close()方法关闭。4.2 数据报通信在TCP/IP协议中有一个重要的定义,那就是IP数据报(IP Datagram)。IP数据报是在Internet上传输的包。它和硬件的配置无关,是由两部分组成:首部和数据。首部的前20个字节是固定的,它是所有IP数据报都必须要有的,首部剩下部分的长度是可变的。根据需要进行相应分配。例如考虑排错或者安全等
16、因素需要。34.3 多线程编程多线程的目的是使对CPU的利用率提高到最大。4操作系统由原来的单任务发展到现在能够同时进行多任务。实现多任务就可以通过多线程。我们知道进程是指在电脑内存运行的一个应用程序。在内存中每个进程都是独立占用的内存空间。一个进程可以有很多个线程在运行。例如火车的售票系统,在售票系统运行过程中,在同一时间可能有很多人在进行买票操作。通过多线程方式能很好解决同时进行的操作。在操作系统中,每个线程都会有一个优先级。优先级高的线程在正常情况下比优先级低的先执行。Java实现多线程有两种方式:通过继承java.lang.Thread类和实现java.lang.Runnable接口。
17、4.3.1 Thread类Thread类提供了用来启动、挂起、恢复以及终止线程的方法,除此之外,还提供控制线程的优先级以及线程的名字等其他方面的方法。使用Thread类最简单的方法是扩展它,并覆盖run()方法,当线程启动时会调用这个方法。通过覆盖run()方法,就可以使线程在后台完成一些有用的任务。54.3.2 Runnable接口虽然扩展Thread类是创建多线程应用程序的一种方法,但是,它通常不是最好的方法。记住,Java只支持单继承,这与支持C+这样的多继承的语言不同。这意味着,如果一个类扩展了Thread类,它就不能扩展其他类。更好的方法是实现Runnable接口。Runnable接
18、口接口定义了一个方法,run(),必须实现这个方法。类实现这个接口,以表明它们可以作为独立的线程执行。5总体设计该多点互动通讯系统采用的是C/S架构,采用客户机/服务器(C/S)模式来设计,是一个二层的C/S结构,其分层机构如图1所示。客户层也叫做应用表示层,也就是我们说的客户端,这是应用程序的用户接口部分。给即时通讯工具设计一个客户层具有很多优点,这是因为客户层担负着用户与应用间的对话功能。它用于检查用户的输入数据,显示应用的输出数据。为了使用户能直接地进行操作,客户层需要使用图形用户接口。6若通讯用户变更,系统只需要改写显示控制和数据检查程序就可以了,而不会影响其他两层。服务层又叫做功能层
19、,相当于应用的本体,它是将具体的业务处理逻辑编入程序中。例如,用户需要检查数据,系统设法将有关检索要求的信息一次性地传送给功能层;而用户登录后,聊天登录信息是由功能层处理过的检索结果数据,它也是一次性传送给表示层的。在应用设计中,必须避免在表示层和功能层之间进行多次的数据交换,这就需要尽可能进行一次性的业务处理,达到优化整体设计的目的。图1 二层C/S结构示意图5.1 功能设计该多点互动通讯按如下过程完成通讯:(1)用户向服务器注册;(2)用户注册之后,向服务器发送消息;(3)服务器再把消息发送给相应的用户。根据以上描述,该系统功能模块图如图2所示图2多点互动通讯功能模块图5.1.1 服务器端
20、功能设计在服务器端的程序具有以下的功能实现:(1)开启服务器程序,进行监听,接收客户端连接。(2)接收消息、分析消息、转发消息。(3)关闭服务器端的程序,并向所有已连客户端发送服务器端程序已关闭消息。5.1.2 客户端功能设计在客户端的程序必须具有以下的功能实现:(1)用户注册。(2)请求连接服务器,并把此用户登录请求发给服务器端。(3)随时可以向服务器发送消息。(4)随时可以接收服务器端转发过来的消息。(5)响应服务器端程序已关闭消息。5.2 界面设计5.2.1 服务器端功能设计在服务器端的界面设计实现:有两个按钮,分别是开启服务和停止服务,把这两个按钮放入一个面板中,然后把此面板放入到窗体
21、中。此界面能实现服务器端的服务开启和停止的功能。5.2.2 客户器界面设计在客户端设计了五个界面:登入界面、注册界面、好友界面、聊天界面、修改密码界面。(1)登录界面设计实现:在登录界面中有两个输入框,能实现用户账号和密码的输入,并且密码输入是不可见的。还有三个按钮:登录、取消、注册向导。(2)注册界面设计实现:当点击登录界面登录按钮时,进入注册界面。注册界面能实现用户输入申请的账号,设置密码。还设计有注册和返回按钮来方便使用者的操作。(3)好友界面设计实现:登录成功后,进入好友界面。好友界面有:我的好友、陌生人、黑名单三个按钮。当点击我的好友时,能实现我的好友列表,当点击陌生人时,能实现陌生
22、人列表。(4)聊天界面设计实现:当双击列表中某好友时,跳出与此好友聊天的界面。聊天界面包括:聊天内容显示、输入聊天信息、发送聊天信息。(5)修改密码界面设计实现:当在登录界面点击修改密码时,进入修改密码界面。修改密码界面能实现输入账号、原有密码和需要修改的密码。还设计有修改密码和返回按钮来方便使用者的操作。6详细设计6.1 服务器端详细设计6.1.1 界面设计在java程序中,我们可以通过自己编写的类继承JFrame类的方法实现要创建的窗体。当我们用到JFrame类,我们需要导入java.awt.*和java.swing.*。我们要在窗体内加入一个装有控制按钮的面板(JPanel)。关键代码如
23、下:jPanel_show=new JPanel();jButton_start=new JButton(启动服务器);jButton_start.addActionListener(this);jButton_stop=new JButton(关闭服务器);jButton_stop.addActionListener(this);jPanel_show.add(jButton_start);jPanel_show.add(jButton_stop);this.add(jPanel_show);6.1.2 功能模块的实现本系统在C/S模式下进行开发,所以服务器端的程序设计至关重要。下面就服务器
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
15 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 JAVA 套接 多点 互动 通讯