基于Socket仿微信系统网络应用课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一. 设计目的
1.掌握网络应用设计的方法和步骤;
2.掌握用户需求分析的方法和设计文档的编制方法;
3.掌握应用开发辅助软件的使用方法;
4.掌握数据库设计方法;
5.掌握通信协议的特点,消息格式设
6.掌握软件测试的基本流程。
二. 设计内容
随着网络的快速发展,社交网站也变得越来越普及,人们不必再去花费大量的时间和精力去参加社交活动所,只要通过互联网便可拥有自己的朋友圈。
仿微信系统基于Socket实现C/S架构完成系统搭建,安卓端作为客户端,服务器端采用多线程响应每个客户端,在服务器端有用户注册到数据库,存储转发客户端相关消息。客户端界面与功能完成微信官方客户端的部分常用功能,包括语音实现,消息实现,图片实现等。主要完成一个具有实用价值的网络应用程序,该应用中应包括:图形化界面、套接字通信、多线程处理、相应的业务处理逻辑等。对于该系统:
第一,通讯基础模块的快和省。
手机社交产品种类很多,包括手机IM、SNS、图片分享、位置交友等。而这些社交产品都有一共同的功能:通讯,这是手机社交产品最为基础的功能。而用户对通讯的要求非常简单,那就是要快和省。
因此所有手机社交类产品开发准则第一条就是:通讯基础模块的快和省。如果没有这一基础,其他的功能都妄谈。
第二,交互设计要轻和简洁
由于社交类应用,都牵扯到用户的交互,而交互的设计必须轻和省。所谓轻,就是要尽可能减少产品的层次,最好只有一层,并可以通过滑动触控迅速在各功能之间切换;所谓省,就是要求一步可以完成的操作,不要让用户做2步。
目前,新浪微博手机客户端的交互就存在很大问题。由于评论与转发分别提醒用户,导致一个内容用户看2次,刷新2次微博,浪费时间和流量,没有做到轻;而评论功能,则需要做2步才可以完成,没有做到省。
第三,手机社交产品都应具备LBS功能
SoLoMo作为互联网与现实之间的桥梁,可以让用户轻松的从线上走到线下,这也是互联网从虚拟走向现实的开始。一款社交产品,如果只有线上的沟通,时间久了,用户会感觉到无价值,而一旦整合LBS功能,则让其社交的价值更加实在,更容易落地。而且通过LBS功能,还可以与身边的各类生活服务相结合,对用户生活带来巨大帮助。比如,手机QQ的查看附近的人和查看附近的商家,就是社交+LBS的应用。
第四,读图时代来临,“轻社交”盛行
例如Instagram卖了10亿美元,这被认为是移动互联网市场的最大黑马,而其快速发展的原因在于用户可以通过这个简单的软件分享自己的照片。有数据显示,facebook中70%的信息是图片信息。用户随手拿起手机,拍一张照片,然后通过分享与朋友、陌生人互动,这其实触动了用户show的神经,而每个人都有show的欲望。
目前,快速发展的path,微博的美图精选,甚至是手机QQ都加入个人名片图片墙,微信的朋友圈,其实都看中了读图的巨大市场前景。而图片加上简单的文字,构成了轻社交,而用户对这些照片,或许只是一个“赞”,一个表情符即可表达自己的观点。用户越来越懒惰,而share和show却越来越疯狂,我想这正是“轻社交”时代的标志。
总之,社交软件的兴起不是偶然的,满足大多数网名的需求。
三.概要设计
本系统中提供以下功能:
●客户端首先注册登录名和密码,服务器将此信息保存在XML文件中;
●客户端通过登录的方式进入应用;
●客户端获得已在用户列表权限;
●客户端默认发送的信息为公开信息;
●客户端可以选择消息的接收者;
●客户端可以发送字符消息,语音消息,图片表情给指定接收者;
●服务器端管理用户信息;
●服务器端向客户端转发消息;
●服务器端采用多线程的方式来响应客户端连接;
C:android平台实现 S:java project实现
1.功能模块图
图1 仿微信系统功能模块图
2.各个模块详细的功能描述
①注册:服务器端中增加一个用户的信息,客户端需要填写用户名、头像图片等基本信息。
②登陆:用户提交IP,端口号,用户名进行登录
③验证:服务器端接收到用户信息与数据库内容比对进行验证
④文字发送:Client1向Client2发送“hello”,数据流程为 Client1→Server (解析消息内容,查找接收者Client2的写线程)→Client2,这样就能准确的将消息发送到Client2。
⑤语音发送:发送端有三个主要的类:AudioRecorder(负责音频采集),AudioEncoder(负责音频编码),AudioSender(负责将编码后的数据
发送出去);这三个类中各有一个线程,录制开始后,这三个线程一起运行,分别执行各自的任务, AudioRecorder采集音频后,添加到AudioEncoder 的音频数据的List中,而AudioEncoder 的编码线程不断从List头部取出数据,调用ilbc 的底层\函数进行编码,编码后的数据则又添加到下一级的AudioSender 的 List中,AudioSender又不断从头部取出数据,然后发送出去。
⑥图片发送:client上传图片给服务器,然后转发给各个客户端。
四.详细设计
1.功能函数的调用关系图
Server端:
图1 User类关系图
图2 Constant类关系
图3 Server类关系
图4 工具类关系
图5 仿微信系统服务器端功能函数图
②信息类:User类用户信息Message类消息C ontentFlag 内容标识类,区分不同的消息类型
③主类:MainServer类启动服务器
④业务逻辑类:ChatServer类服务器Socket处理chatServerTask类Quit()服务器终止,关闭所有线程start()服务器启动SocketTask()内部线程类,负责与个客户端的数据通信sendMsg()发送消息run()// 处理注册消息//处理登录消息//将聊天室其它所有在线用户的头像数据缓存到该登录用户客户端//加载用户头像资源//循环向连接的每个Socket客户端发送登录消息//处理录音消息//循环向连接的每个Socket客户端发送消息//处理普通消息//处理退出消息