各位大牛,大大牛们。小弟不才,与众位同学,由于臭味相投,想做点事。做一个简单的网络聊天室,java做。
望各位说说网络聊天室的开发过程,我不要源代码,只要分析开发的过程,越详细越好,小弟很菜。
由于小弟初涉贵地,一共200分,还要在贵地下一些好东西,所以分就不给了。
------解决方案--------------------------------------------------------
先做需求分析吧
------解决方案--------------------------------------------------------
抽象出使用聊天室的角色,再抽象出他们的父类。
设计各个角色的关系。
再设计:消息对象,消息盒子等。
界面设计、缓存设计。
其实需求等不用了,用了那么多的聊天室,不用像都知道需要什么功能。
------解决方案--------------------------------------------------------
基于LAN的聊天系统
随着网络技术的飞速发展,网络在人们的生活中所扮演的角色越来越多,也越来越重要。我们可以借助网络进行网上购物、网上求医问药、网上银行、网上报名等。我们的人际关系网也可以在网上进行,人们可以通过这个空间进行网络聊天,实现彼此沟通,交换信息,甚至网络聊天工具在部分人的生活中大有与传统的电话通信手段同等重要的趋势。
在公司或企事业单位中,为了交流工作经验或是几个人合作完成某项工作,采取开会的方式既浪费时间和各种办公资源,又没有很好的实时性,采用ICQQ、MSN等网络聊天工具,不仅浪费有限的网络资源,又有可能带来不必要的安全隐患,或由于数据量过大而造成本局域网内数据阻塞,以至于影响日常工作使其无法正常进行。
随着局域网技术的发展,大多企事业单位或公司构建了本单位的局域网。利用基于LAN的聊天系统交流工作经验或是彼此通告工作进程,既可以节约时间、及时知道彼此的信息或工作进度,而且不会带来例如外网入侵或是病毒感染等安全隐患问题。使用基于LAN的聊天程序,使交流工作经验或彼此通告工作进程变的更加方便快捷,同时也促进了单位的发展,使本单位在激烈的竞争环境中更具有优势。
目前,国内外研究基于LAN的聊天系统基本上有两种模式:
(1)采用客户端/服务器模型。用户上线时,要先向服务器请求建立连接,服务器同意建立连接后,用户将个人信息送交服务器;服务器则给此用户分配相关资源并建立相关服务线程,同时,服务器向其他在线用户发送此用户上线消息和其个人信息,并将当前所有在线用户的信息发给新上线的用户。这时,新上线的用户就可以和其他在线用户进行聊天或是文件传送。聊天内容的传送或文件传输有两种解决方法:
①先传给服务器,然后再由服务器转发。这种方法资源共享的程度很高,但由于所有数据都要经过服务器,服务器的负担很重。因此,这种方法常用于有大量数据需要共享的单位。
②直接发送到接收用户。服务器将每个上线用户的个人信息与其网络地址发送给其余上线用户,当一个用户向另一个用户发送信息或是传送文件时,直接传送到接收用户的电脑上。这种方法的优缺点与前一种刚好相反,其常用于资源共享程度不高的小公司里。
(2)采用对等模型。此模型没有服务器,用户上线、下线和用户维护等功能都由个人电脑完成。当用户上线时,运行在本机上的程序完成初始化的工作,并启动聊天、文件传输等服务,初始化工作做好以后,运行程序向整个局域网发送用户上线消息和个人信息及网络地址,以后运行程序会每隔一定时间发送自己在线的消息。用户发送自己上线或在线消息的同时,它也监听网络上是否有别的用户发送上线或在线消息,当接收到用户上线或在线消息时,读取此用户的个人信息并检查朋友列表中是否已有此朋友,如有则不做任何工作,没有就将此用户加到朋友列表中。当用户下线时,程序会向整个网络广播自己下线的消息,收到该消息的在线用户将下线用户从在线朋友列表中删除,如果此时有与下线用户进行聊天或文件传输的,聊天或文件传输中止。
对比这两种模型,对等模型适合一般资金力量较弱、数据共享不多的单位,对运行所需的网络环境、机器配置要求一般;开发工具和环境简单;容易维护等优势。
在众多的编程语言中,VC的套接字使网络通信编程变的更加简单,并且VC特有的MFC类库封装了象临界区类、互斥体类等在编程过程常使用的类,使用MFC使编程更加简捷,项目的开发进度加快。
综合考虑,我的毕业设计—基于LAN的聊天系统采用对等模型,开发语言用VC。
基于LAN的聊天系统的主要功能是以网络为载体进行信息的传递,其主要实现四个功能:
(1)在线朋友维护。在线朋友维护部分包括在线用户的显示、用户昵称的修改、实时更新(上线、下线)。只要有用户上线,所有在线的朋友都可以知道,并且可以和他聊天及进行文件的传输。使用本系统的用户,可以看到在线朋友的昵称,并根据昵称来进行聊天、文件传输功能。当朋友下线的时候,在线的人都可以得到通知,同时这个朋友的昵称从朋友列表中消失,如果正在和这个朋友进行文件传输,那么文件传输中止,如果正在和这个朋友聊天,那么和这个朋友的聊天也中止。在线朋友的维护采用高效的双向链表作为数据结构,每个结点都是一个指向CFriendObj的指针。整个系统中只有一条在线朋友的链表,为了方便使用,它作为主窗口类 CNetMsgDlg的静态成员出现。
(2)聊天功能。本功能就是在线双方互相传递信息的功能,它包括一般文字的传输和文件的传输两部分。只要在线就可以和所有使用此系统的已经在线的朋友进行聊天,并且为不同的朋友提供不同的聊天窗口,在这个聊天窗口中,要提供聊天信息的输入和聊天信息的显示功能。当一次聊天信息发送没有结束时,不能进行新的聊天内容的输入。另外,发送的信息都应该保存起来,以备“查看历史纪录”功能使用。
(3)文件传输功能。文件传输功能由两个子功能组成:(1)文件传输功能,因为文件传输必须确定接收方,因此本系统将此功能放在聊天窗口中,当点击传输文件的按钮后,提供选择文件的通用对话框,系统通过此通用对话框窗口来帮助用户找到要传送的文件,确认要进行文件传输后,这个文件会通过局域网传送到与自己聊天的朋友的机器上,并且接受者收到这个文件后会被系统自动放到一个指定的目录下;(2)支持文件拖拽,此功能支持用户将文件直接拖拽到和这个朋友的聊天窗口之上进行传输文件的选择(在拖拽的时候系统就不再提示)。
(4)查看历史纪录信息。系统在发送和接收聊天内容时,会把这个信息按照聊天对象的昵称进行保存,当用户选择查看聊天信息时,系统会调出与特定聊天对象的信息,让用户进行查看。
另外,朋友上线、下线采用UDP报文的形式向整个局域网广播,所有使用本系统的在线用户都会收到该报文并进行相关的朋友维护和其他操作;聊天信息以UDP报文的形式从发送方向接收方传送;文件传输采用TCP协议以保证传送的文件可靠、正确地被接收方接收。