即时通讯软件的设计与实现

即时通讯软件的设计与实现

ID:957409

大小:627.00 KB

页数:18页

时间:2017-10-20

即时通讯软件的设计与实现_第1页
即时通讯软件的设计与实现_第2页
即时通讯软件的设计与实现_第3页
即时通讯软件的设计与实现_第4页
即时通讯软件的设计与实现_第5页
资源描述:

《即时通讯软件的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、即时通讯软件的设计与实现1系统实现模块1.1服务端模块服务端主要包括三个模块:1.网络模块,建立TCP服务器,负责监听端口,与客户端建立连接并接受和发送数据。2.应用模块,负责处理从网络模块接收到的数据,予以分析处理,进行转发或对数据库进行操作,并返回相关信息。3.数据层,数据层用来与数据库建立连接,应用模块必须通过数据层来进行数据库的操作。服务端网络模块逻辑模块数据层日志记录图4.1系统模块图1.2客户端模块用户端包块以下模块:1.用户界面模块,此模块包括客户端的操作界面,由NetBeans编写的GUI,进行了较多的美化

2、,采用偏向Vista的风格。2.网络模块,此模块包括两个小模块,TCP模块用于和服务器端通讯,而UDP模块则负责和客户端进行P2P通讯。3.聊天模块,此模块负责在用户聊天时候,对聊天的数据进行封装,对聊天的图片也进行压缩,以适用网络传输。在接受到聊天数据之后,又会对聊天数据进行分解操作,最后生成聊天内容。4.群组模块,此模块包括群组聊天、群组的创建、管理、更新等功能。5.文件传输模块,此模块用于实现客户端之间的文件传输功能。6.视频聊天模块,此模块用于实现客户端之间的视频聊天功能。7.系统设置记录模块,此模块用于实现保存聊

3、天记录,登录日志,以及保存系统设置信息的功能。客户端用户界面模块网络模块聊天模块群组模块文件传输模块视频聊天模块系统记录模块图4.2客户端模块图2数据库设计2.1用户表设计用户表是系统中的基础表,主要用来记录用户注册时的各种信息,此表还有一个从表userlogin表用来记录用户登录和状态信息。[12]Userinfo表字段名字段类型字段长度备注IDInt11主键UseridInt11用户IDNameVarchar20用户名SexVarchar2性别ageInt4年龄CityVarchar50城市mailVarchar50信

4、箱addressVarchar60地址TelephoneVarchar15电话faceint2头像号UserLogin表字段名字段类型字段长度备注UseridInt11用户IDPassVarchar20用户密码FettleInt2用户状态IpaddressVarchar20IP地址2.2用户关系表用户关系表是用来保存用户之间的好友关系的数据表,查询好友列表的时候要从此表中查询与自己ID想关联的好友ID,type字段可以设置两者的关系,其中1为好友关系,0为黑名单。字段名字段类型字段长度备注Idint11主键UseridIn

5、t11用户ID号FrendidInt11好友ID号TypeInt4关系类型其他表,如组群表,族群信息表就不在此一一列出。3系统模块的详细设计此章节将叙述系统部分模块的设计方法和具体实现。3.1网络模块的设计实现本系统采用TCP和UDP混合的网络通讯,客户端与服务器之间登录验证时采用TCP连接,登录之后,客户端与服务器采用UDP方式保持通讯,客户端和客户端之间采用UDP连接,如果无法直接连接,通过服务器申请UDP穿透NAT,如果失败,则消息通过服务器中转传递。因为要在网络通讯中直接传递对象,故采用基于JavaNIO的I/O的

6、Cindy异步框架,Cindy是一个Java异步I/O框架,提供了一个统一高效的模型,同时支持TCP、UDP以及Pipe,并能够方便的在异步和同步操作之间进行切换。目前其实现是基于JavaNIO,并计划通过JNI来支持各操作系统上本身提供的异步I/O功能,应用可以方便的通过运行期属性来方便的切换到更为高效的实现上。[13]JavaNIO包虽然提供了非阻塞I/O模型,但是直接使用NIO的非阻塞I/O需要成熟的网络编程经验,处理众多底层的网络异常,以及维护连接状态,判断连接超时等等。对于关注于其业务逻辑的应用而言,这些复杂性都

7、是不必要的。不同Java版本的NIO实现也会有一些Bug,Cindy会巧妙的绕开这些已知的Bug并完成相应功能。并且NIO本身也在不断发展中,Java1.4的NIO包中只实现了TCP/UDP单播/Pipe,Java5.0中引入的SSLEngine类使得基于非阻塞的流协议(TCP/Pipe)支持SSL/TLS成为可能。使用Cindy,应用可以在同步和异步之间进行无缝切换,对于大部分操作是异步,可某些特殊操作需要同步的应用而言,这极大的提高了易用性。[14]1.服务器端编码:SessionAcceptoracceptor;ac

8、ceptor=SessionFactory.createSessionAcceptor(SessionType.TCP);acceptor.setListenPort(port);//设置监听端口port为端口号acceptor.setAcceptorHandler(newSessionAcceptor

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。