基于java socket的聊天室项目文档.doc_第1页
基于java socket的聊天室项目文档.doc_第2页
基于java socket的聊天室项目文档.doc_第3页
基于java socket的聊天室项目文档.doc_第4页
基于java socket的聊天室项目文档.doc_第5页
免费预览已结束,剩余31页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

北京邮电大学软件学院 2010-2011 学年第 1学期实训项目文档(每个项目小组一份)课程名称: 全日制研究生实训 项目名称: 通信软件实训 项目完成人:姓名: 学号: 姓名: 学号: 姓名: 学号: 姓名: 学号: 姓名: 学号: 姓名: 学号: 指导教师: 日 期:2011年1月21日l 基于java socket的聊天室实现一 . 实训项目目的和要求(说明通过本项目希望达到的目的和要求) 目的:熟练掌握socket编程原理,并用java socket实现聊天室 要求:实现p2p和聊天室功能二 . 实训项目开发环境(说明本项目需要的环境) 开发工具:eclipse sdk version: 3.5.2 和 netbeans 6.9.1 版本 系统:win7三 . 实训项目内容(说明本项目的内容,如:问题分析、设计方案、算法、设计图等)1.问题分析网络编程中两个主要的问题一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。在tcp/ip协议中ip层主要负责网络主机的定位,数据传输的路由,由ip地址可以唯一地确定internet上的一台主机。而tcp层则提供面向应用的可靠(tcp)的或非可靠(udp)的数据传输机制,这是网络编程的主要对象,一般不需要关心ip层是如何处理数据的。目前较为流行的网络编程模型是客户机/服务器(c/s)结构。即通信双方一方作为服务器等待客户提出请求并予以响应。客户则在需要服务时向服务器提 出申请。服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也 能及时得到服务。两类传输协议:tcp;udp。tcp是tranfer control protocol的 简称,是一种面向连接的保证可靠传输的协议。通过tcp协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建 立连接,以便在tcp协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送 或接收操作。两类传输协议:tcp;udp。tcp是tranfer control protocol的 简称,是一种面向连接的保证可靠传输的协议。通过tcp协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建 立连接,以便在tcp协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送 或接收操作。udp是user datagram protocol的简称,是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。比较:udp:1,每个数据报中都给出了完整的地址信息,因此无需要建立发送方和接收方的连接。 2,udp传输数据时是有大小限制的,每个被传输的数据报必须限定在64kb之内。3,udp是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方tcp:1,面向连接的协议,在socket之间进行数据传输之前必然要建立连接,所以在tcp中需要连接 时间。2,tcp传输数据大小限制,一旦连接建立起来,双方的socket就可以按统一的格式传输大的数据。3,tcp是一个可靠的协议,它确保接收方完全正确地获取发送方所发送的全部数据。应用:1,tcp在网络通信上有极强的生命力,例如远程连接(telnet)和文件传输(ftp)都需要不定长度的数据被可靠地传输。但是可靠的传输是要付出代价的,对数据内容正确性的检验必然占用计算机的处理时间和网络的带宽,因此tcp传输的效率不如udp高。2,udp操作简单,而且仅需要较少的监护,因此通常用于局域网高可靠性的分散系统中client/server应用程序。例如视频会议系统,并不要求音频视频数据绝对的正确,只要保证连贯性就可以了,这种情况下显然使用udp会更合理一些。2.设计方案基于socket的java网络编程。网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个socket。socket通常用来实现客户方和服务方的连接。socket是tcp/ip协议的一个十分流行的编程界面,一个socket由一个ip地址和一个端口号唯一确定。但是,socket所支持的协议种类也不光tcp/ip一种,因此两者之间是没有必然联系的。在java环境下,socket编程主要是指基于tcp/ip协议的网络编程。socket通讯的过程。server端listen(监听)某个端口是否有连接请求,client端向server 端发出connect(连接)请求,server端向client端发回accept(接受)消息。一个连接就建立起来了。server端和client 端都可以通过send,recv等方法与对方通信。3.设计图图1:聊天室用例图用例说明文本:1、 用户登录用例:客户端运行,用户可以用用户名和端口号登陆到服务器。2、 服务器注册用例:服务器根据用户输入的用户名和端口号和sip地址记录用户信息并把信息广播给所有的在线用户。3、 客户端发送消息用例:客户端县服务器带有关键字(群聊/私聊/登录/退出)的消息到服务器。4、 服务器转发消息用例:服务器解析收到的消息,提取目的端sip地址,并把消息转发到目的端。5、 客户端退出用例:客户端向服务器发送log on消息。服务器把该客户信息从用户列表中删除,并更新在线列表。图2聊天室领域模型图3登录顺序图图4聊天顺序图四 . 实训项目结果及分析 项目分析:客户端实现:以服务方主机地址和端口号为参数调用 socket 类的构造函数去创建一个 socket 对象. 创建过程包含了向服务方请求建立通讯连接。使用 socket 对象的 getinputstream() 和 getoutputstream() 方法创建用于网络传输的输入/输出流。使用所得的网络流对象读写数据,网络流对象将读写转换成对 socket 数据的接收和发送。工作完毕, 关闭网络流对象服务器实现:以某端口号为参数调用 serversocket 类的构造函数去创建一个 serversocket 对象,作为服务器的socket。调用被创建的 serversocket 对象的 accept() 方法在指定端口监听客户方的连接请求。收到客户请求后,accept() 方法返回一个新建的 socket 对象, 该对象代表和客户方建立起来的通讯连接在服务方的通讯端点。使用 socket 对象的 getinputstream() 和 getoutputstream() 方法创建用于网络传输的输入/输出流。使用所得的网络流对象读写数据,网络流对象将读写转换成对 socket 的数据的接收和发送。工作完毕, 关闭网络流对象项目实现:五 . 实训项目人员、进度安排及完成过程小组一共六个人,在这一星期的实训中,每个人都认真学习了java socket的内容,并在此基础上进一步完成聊天室功能实现。由于基础不同,我小组分工及人员完成情况如下:小组组长:在这个项目里主要负责协调各个组员之间的协作,进行项目分工,画用例模型,总结整理组员的工作。技术经理:主要负责java socket的研究并回答小组其他成员的疑问,在聊天室的设计过程中,对一些功能实现提出了建设性的意见。技术人员:主要负责几个聊天室程序的分析与设计,设计文档的撰写,聊天室程序编写的大部分工作。测试人员:负责聊天室程序的测试工作,需求文档的撰写,负责文档的整理,资料的搜集以及小组ppt的制作。六 . 实训项目心得及体会心得体会:理解了socket工作流程和实现方法,熟练掌握socket编程,实现了简单的聊天室功能,对多线程有了更进一步的理解。通过老师对sip协议的讲解,使我对sip协议有了一个初步的认识,使我明白了sip(session initiation protocol)是一个应用层的信令控制协议。用于创建、修改和释放一个或多个参与者的会话。这些会话可以好似internet多媒体会议、ip电话或多媒体分发。会话的参与者可以通过组播(multicast)、网状单播(unicast)或两者的混合体进行通信。在学习网络传输的过程中,对两种网络传输协议有了更进一步的理解和深刻的体会。七 . 附录(附上实训项目其他文档,具体内容根据项目要求确定)1. 需求分析文档错误!未找到索引项。2. 设计文档3. 项目ppt4. 源程序l linux操作系统下基于c语言的 socket聊天室实现一 . 实训项目目的和要求(说明通过本项目希望达到的目的和要求)基于linux系统下的socket编程p2p聊天系统1.掌握linux环境下socket编程的基本过程;2.熟练掌握c语言编程方法;3.了解gcc编译器的编译过程,并能在linux系统下熟练使用。二 . 实训项目开发环境(说明本项目需要的环境)系统环境:linux系统编译环境:gcc编译器三 . 实训项目内容(说明本项目的内容,如:问题分析、设计方案、算法、设计图等)问题分析:如何通过socket实现linux环境下的点对点通信。设计方案:1. 目的:在linux系统中实现点对点通信2. 要求:使用socket、c语言编程3. 步骤:(1)根据socket通信机制,编写c源程序; (2)对源程序进行反复测试、修改; (3)实现点对点通信功能。 设计图:四 . 实训项目结果及分析 p2p网络聊天系统的测试结果如下:结果分析:该测试是在一台计算机上进行的,若要实现两台计算机间的点对点通信,只需修改相应的ip地址和端口号即可。如图所示,该系统实现了p2p通信,即通信双方之间可以相互发送和接收消息,达到了预期目的,满足了用户需求。五 . 实训项目人员、进度安排及完成过程小组一共六个人,在这一星期的实训中,每个人都认真学习了linux操作系统环境下的c socket的内容,及gcc的编译环境,并在此基础上进一步完成聊天室功能实现。具体的分工如下:负责udp通讯协议下聊天室的程序编写。负责tcp通讯写一下的聊天室的程序编写。同学,主要负责编写需求分析,绘制领域模型等工作。六 . 实训项目心得及体会linux环境对于我们都是一个陌生的环境,通过这个项目的联系,收获的不仅是c socket的通信编程。更大的收获是对linux环境的学习,了解了linux的文件构成。七 . 附录(附上实训项目其他文档,具体内容根据项目要求确定部分核心代码if(fork()=0)char msg256;while(strcmp(msg,) != 0)printf(enter input messagen);scanf(%s,msg);sendto(sockffdd, msg, sizeof(msg), 0, (struct sockaddr *)&server1,sizeof(struct sockaddr);printf(send successfuln);usleep(100000);close(sockffdd);/char buf4096;int resize, the_len;the_len = sizeof(struct sockaddr);while(true)printf(ok);resize = recvfrom(sockfd, buf, sizeof(buf), 0,(struct sockaddr *)&their, &the_len);printf(receive message is:%s, buf);printf(tt%sn, inet_ntoa(their.sin_addr);l 基于jain-sip聊天室的开发一 . 实训项目目的和要求(说明通过本项目希望达到的目的和要求)l 熟悉jain-sip协议规定的通信工程;l 完成一个有gui界面的聊天室,最基本要实现公聊和私聊内容;二 . 实训项目开发环境(说明本项目需要的环境)开发工具:eclipse 3.2版本 和 netbeans 6.9.1 版本系统要求:装有java 虚拟机的 windows xp 及高版本 、linux等其他系统接口/协议约束:必须使用jain-sip协议栈,支持ipv4接口用户界面的约束:用户界面要求操作系统能支持java 虚拟机,并有gui桌面。软件质量的约束:正确实现了网上聊天室的群聊、私聊、显示在线列表,新建聊天室功能,选择进入聊天室。服务器端通过jain-sip封装的类使用多线程分别处理监听,发送功能。但本软件的主要实现通信的只有一个类,略有庞大,并且与多个界面有联系,之间互相有操作、调用关系,故程序的耦合度比较大。三 . 实训项目内容(说明本项目的内容,如:问题分析、设计方案、算法、设计图等)3.1本系统介绍:本聊天室系统适用于大多数用户,对用户操作能力的要求低。同时,该系统的界面简洁,系统资源占用少,运行速度快,对于小型局域网内的用户可以起到很好的交流作用。所谓聊天室就是一个可以让许多用户同时相互通信的网上园地,个人用户可以通过网上聊天室将自未自己获取更多的知识和更多的阅历。本聊天室主要用登录界面、聊天室界面、私聊界面、创建聊天室界面等构成,这个设计简洁明了,实用,使用简单。系统的总体框架图如图2所示:聊天室系统服务器客户端监 听 请 求用 户 退 出显示登录情况用 户 登 录转 发 请 求私 聊创建聊天室群 聊本系统的主要功能:(1) 聊天室系统界面由登录界面,聊天窗口,私聊窗口组成,聊天窗口分为聊天室名称,在线人数,消息发送区,消息显示区。 (2) 用户首先在登录界面输入昵称,点击登录按钮登录系统。客户端随即与服务端进行三次握手,收到“ok”回应后打开群聊窗口。(3) 用户可以在群聊窗口的点击用户在聊天室中的在线用户列表中可以双击某个用户,随后弹出私聊窗口,进行对被点击用户之间的私聊。(4) 用户可以创建新的聊天室,其他用户可以进入到新建的聊天室里。(5) 用户在聊天窗口可以发送消息,服务器收到消息后广播给所有登录用户。并且在消息显示区显示消息发送方的昵称。(6) 服务器端可以记载所有用户的聊天的信息,包括私聊信息。并能通过打开一个在线用户列表用户。可以实时看到用户列表。(7) 聊天室系统界面由登录界面,聊天窗口,私聊窗口组成,聊天窗口分为聊天室名称,在线人数,在线用户列表区,聊天室创建/选择,消息发送区,消息显示区。 (8) 用户首先在登录界面输入昵称,点击登录按钮登录系统。客户端随即与服务端进行三次握手,收到“ok”回应后打开聊天窗口。(9) 用户可以在聊天窗口的点击聊天室标签,进行创建新的聊天室,或选择一个已有的 聊天室。用户创建新聊天可以点击创建后输入聊天室名称,然后点确定。(10) 用户在聊天窗口可以发送消息,服务器收到消息后广播给所有登录用户。并且在消息显示区显示消息发送方的昵称,发送时间,消息内容。用户在聊天室中的在线用户列表中可以双击某个用户,随后弹出私聊窗口,进行私聊。3.1子系统结构图(1)客户端子系统(2)服务端子系统3.3分解系统的目的:聊天室的系统主要由客户端和服务端组合而成,故可以分为两个子系统。这两个子系统可以独立的处理客户和服务器的各自的需求,如客户可以填写发送的消息,服务器可以查看用户的消息和用户的是否在线。3.4子系统之间的关系两者之间采用jain-sip协议通过请求消息和响应消息建立通信机制。3.5模块汇总3.5.1 登录系统如表1所示:用例名称登录系统范围聊天室系统应用级别用户目标主要参与者登录用户前置条件无成功保证成功登录聊天室系统主成功场景1. 用户进入登录窗口界面2. 用户输入昵称,并点击登陆,向服务器端发送登陆请求3. 系统验证用户身份,返回客户端一个响应4. 用户成功登录系统,并进入相应的聊天室系统扩展2a. 登录超时1. 系统给出登录超时的提示1. 用户重新输入昵称,并提交 表13.5.2 群聊如表2所示:用例名称用户群聊范围聊天室系统应用级别用户目标主要参与者成功登录的用户前置条件用户登陆成功成功保证成功进行群聊主成功场景1. 用户成功登录后,选择右侧下方的消息输入区2. 在输入区输入消息,并回车,消息发送3. 客户端将用户发送的信息打包传送给服务器4. 服务器对数据进行分析后,并将用户的信息进行正确处理5. 传给处在聊天室的所有在线其他用户6. 将消息正常显示在上方的消息显示区扩展3a. 消息发送失败1. 系统给出消息发送失败的提示2. 用户重新输入消息,进行发送 表23.5.3私聊如表3所示:用例名称用户私聊范围聊天室系统应用级别用户目标主要参与者成功登录的用户前置条件用户登录成功,私聊的对方在线成功保证成功进行私聊主成功场景1. 用户双击在线列表中的某个用户2. 系统弹出私聊窗口3. 在窗口下方输入消息,点击发送按钮4. 系统转发消息,发送到指定的私聊用户,消息显示在私聊窗口的消息显示区,进行双方私聊5. 私聊结束,点击关闭按钮扩展3a. 消息发送失败1. 系统给出消息发送失败的提示2. 用户重新输入消息,进行发送特殊需求不能与不在线的用户进行私聊 表33.5.4 创建聊天室如表4所示:用例名称创建聊天室范围聊天室系统应用级别用户目标主要参与者成功登录的用户前置条件用户登录成功成功保证成功创建聊天室主成功场景1. 用户成功登录后,点击创建聊天室2. 系统弹出新窗口3. 用户输入聊天室名称点击确认4. 创建新聊天室,进行聊天扩展3a. 用户如果输入已经存在的聊天室名称1. 系统给出创建失败的提示2. 用户重新输入,进行确认 表43.5.5 退出系统如表5所示:用例名称用户退出系统范围聊天室系统应用级别用户目标主要参与者成功登录的用户前置条件用户成功登录聊天室成功保证用户在正常情况下退出了聊天室主成功场景1. 用户向服务器发送用户退出消息2. 服务器进行用户退出的数据处理3. 服务器向聊天室其他用户发送退出消息4. 刷新其他在线用户的用户列表信息,并显示当前在线人数 表53.6模块间关系领域模型如下图所示:群聊顺序图私聊顺序图四 . 实训项目结果及分析 登陆界面如下:聊天界面如下:创建群界面如下:五 . 实训项目人员、进度安排及完成过程小组成员分工及安排组长,组织大家讨论聊天室uml设计模型,编程设计思路,解决程序出现的问题。编程人员,主要负责通信模式设计编程人员,主要负责分析jain-sip api。 调试程序,分析并解决问题。调试程序,分析并解决问题。编程人员,主要负责消息处理,界面设计六 . 实训项目心得及体会通过本次的实训项目的练习,让我们充分熟悉了sip协议以及sip在java编程中的实现方法jain-sip作为api来调用。熟练了我们在java的gui方面的应用、强化了我们对于面向对象概念的理解、接口的作用;让我们对uml和ooad的认识又更近了一层,如何用它们知道需求分析、进一步细分软件的功能实现到具体的人员分工。七 . 附录(附上实训项目其他文档,具体内容根据项目要求确定7.1稳定性和可扩展性提示:在“软件”生命周期内,判断哪些需求是不变的,预测哪些需求可能发生的变化。在总体设计的时候,既要使总体结构稳定,又要适应需求变化。当出现代码异常时,部分会出现正确的提示,但客户端的问题不会影响到服务器端正常的运行。用户之间信息传输不会因为数据封装问题出现丢失或乱码。因用户的误操作产生的非法输入信息会得到验证及时的处理或信息提示。软件应正常完成所有功能需求。服务器能长时间运行无故障,但当客户访问量大时或客户发送信息量大时,服务器可能会出现端口阻塞现象,消息得不到响应,甚至服务器瘫痪。由于采用java设计,故可移植性较好。该软件项目将界面程序和后台处理程序分在不同的包中,服务器和客户端也是在不同的包中,这样将来还一些可以扩展系统的功能。7.2 性能分析提示:(1)本系统应当具备哪些性能指标才能满足用户的需求?(2)如何实现性能指标?1. 安全性 用户的合法性不能被伪装。防止网络对服务器的攻击。用户的信息应该尽可能不能被黑客截取。该软件项目目前的安全性还有待进一步提升,考虑没有使用数据库,且传输安全模式还有待进一步测试。2. 扩展性 系统建成后,应在现行系统上不需要做大的改动或不影响整个系统结构,就可以增加功能模块,这就必须在系统设计时留有接口,使其具有可扩展性和维护性。该软件使用了接口,为了将来的扩展留有空间。3. 易用性系统操作的界面必须简洁、操作方便易用、设计合理。由于这次是实验软件,功能并不繁多,简单易用,但界面不够美化。可以通过设计更好的swing界面解决。l 基于o-sip聊天室的开发一 . 实训项目目的和要求(说明通过本项目希望达到的目的和要求)l 熟悉jain-sip协议规定的通信工程;l 完成一个基于控制台的聊天室,最基本要实现公聊和私聊内容;二 . 实训项目开发环境(说明本项目需要的环境) 软件环境各种版本的widows操作系统(x86) 硬件环境cpu:英特尔80386以上配置内存:32mb 硬盘空间:128m 接口/协议的约束:支持标准的ip,tcp传输协议 软件质量的约束,如正确性、健壮性、可靠性、效率(性能)、易用性、 清晰性、安全性、可扩展性、兼容性、可移植性等等。 软件需求能在各种windows操作系统上使用;能连续工作7*24小时, 界面清晰,易于使用;最大支持2000个用户同时在线聊天;支持可以进一步扩大在线人数,切在客户端可以进一步添加功能。三 . 实训项目内容(说明本项目的内容,如:问题分析、设计方案、算法、设计图等)3.1软件系统结构图3.2.1客户端系统登录模块3.2.2 客户端聊天功能模块3.2.3 客户端系统功能模块3.2.4 服务器端转发功能模块3.2.5 服务器日志备份模块3.3功能模块设计概述3.3.1 模块汇总子系统a o-sip聊天室客户端模块名称功能概述系统登录登录客户端,需要输入用户名和客户端所在的ip地址,自动分配一个(8000-999号)端口;聊天功能直接输入想说的话可以实现聊天室公共发言;“$+想说的话”可以与某一在线用户私密聊天(前提要先设置密聊对象);接受公共聊天和私密聊天的内容;系统功能发送“*list”,服务器可以返回当前在线用户url;发送“*help”客户端会提供所有支持的系统功能提示;发送“*quit”客户端会退出,并发送离开消息给服务器,服务器给所有用户广播此离开消息;o-sip聊天室服务器端模块名称功能概述转发功能接收用户的信息并按照不同的类型,重新包装发送(其中用户登录消息和离开消息为广播,私聊消息为转发,查询在线用户消息为回发);日志备份接收每个用户的每一条信息(包括公聊,私聊,以及系统信息),加入服务器的系统时间,保存在“d:log.txt”文件里;3.4 模块之间的关系四 . 实训项目结果及分析 目前我们o-sip的聊天室系统的开发主要是基于控制台,由于开发时间比较仓促,所以用户界面设计部分还未完成,在后续的开发和维护中我们将此部分予以完善,给用户展示一个美观,易用,可靠的用户界面。五 . 实训项目人员、进度安排及完成过程小组成员分工及安排组织大家讨论聊天室uml设计模型,编程设计思路,解决程序出现的问题。编程人员,主要负责通信模式设计编程人员,主要负责分析o-sip api。 调试程序,分析并解决问题。调试程序,分析并解决问题。编程人员,主要负责消息处理,界面设计六 . 实训项目心得及体会在这次o-sip聊天室系统的开发过程中,虽然我们遇到过许多困难,经历了许多波折,但最终设计出的软件还是符合我们最初的设想,由

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论