基于Android的网络聊天软件(仿QQ)设计与实现

目 录
1 绪论 1
1.1 项目背景 1
1.2 研究的目的和意义 1
1.3 国内外研究的现状 1
1.4 论文的主要内容和组织结构 2
1.5 本章小结 2
2 关键技术介绍 2
2.1 Android平台 2
2.1.1 Android特征 2
2.1.2 Android体系结构 3
2.2 TCP/IP协议 4
2.2.1 C/S模型 4
2.2.2 TCP协议 4
2.2.3 Android的MVC架构 5
2.3 多线程技术 6
2.4 运行环境 6
2.5 本章小结 7
3 需求分析 7
3.1 系统的整体分析 7
3.1.1 服务器端 8
3.1.2 客户端 8
3.2 可行性分析 9
3.3 本章小结 9
4 Android聊天软件系统设计 9
4.1 系统实现原理 10
4.2 服务器端 11
4.2.1 用户登录验证模块 11
4.2.2 信息的转发模块 11
4.2.3 刷新好友列表模块 12
4.3 客户端 12
4.3.1 用户登录模块 12
4.3.2 用户交互模块 12
4.3.3 用户注册模块 13
4.3.4 用户设置模块 13
4.3.5 用户注销模块 14
4.4 Android聊天软件用户存储数据库的设计 14
4.4.1 SQLite 简介 14
4.4.2 数据库设计 14
4.5 本章小结 14
5 Android聊天软件的实现 14
5.1 数据传输的实现 14
5.2 服务器端的实现 14
5.2.1 用户登录的实现 14
5.2.2 用户退出 14
5.2.3 更新好友列表 14
5.3 客户端代码的实现 14
5.4 客户端UI实现 14
5.4.1 半透明悬浮窗口的实现 14
5.4.2 主界面左右滑动切换的实现 14
5.5 本章小结 14
6 系统演示与运行 14
6.1 用户登录演示 14
6.2 用户注册演示 14
6.3 主界面演示 14
6.4 聊天界面的演示 14
6.5 本章小结 14
结束语 14
参考文献 14
致谢 14
4 Android聊天软件系统设计
通过上一章需求分析得到(系统的运行如图4-1所示)系统的需求分析以及大致的设计方向,本章将会从系统实现原理、服务器端、客户端与数据库设计的几个方面深层次的介绍系统所涉及的关键技术,通过这些技术的实现,系统的设计阶段将会告一段落。
在这里插入图片描述

图4-1系统运行图
4.1 系统实现原理
聊天系统的设计跟普通网站设计有着许多不同的地方,普通网站设计所考虑的因素,例如,普通网站需要对布局进入大量美化以及动画设计等等,而聊天室只要提供满足访客双方直接实时聊天即可。因此,在设计聊天系统的过程中,必须要考虑好以下几个设计要点:
在Internet上的聊天程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序。如图4-2所示:
服务器端启动后先要调用Serversocket()函数建立一个流式套接字,并返回引用新套接字的描述符。然后将此套接字描述符与本机的一个端口建立关联,这由ServerSocket()函数来完成。服务器只有在调用了accept()函数进入等待状态之后才可以接受来自客户端的请求。一旦接收到客户端通过connect()发出的连接请求,accept()将返回一个新的套接字描述符,通过套接字描述符调用相应的流的read()或write()函数即可与客户端进行数据收发。待数据传送完成,本文转载自http://www.biyezuopin.vip/onews.asp?id=12482服务器和客户端调用closes()关闭套接字。需要说明的是服务器此时关闭的是此前由accept()所返回的新套接字,而不是先前开始创建的套接字。在此套接字被关闭后,服务器将再次处于阻塞状态,以等待下一个客户端的连接请求并重复上述过程。
在这里插入图片描述

图4-2系统实现原理

public boolean connect(User user) {
		boolean isok = false;
		try {
			s = new Socket("10.0.2.2", 9999);
			s.getOutputStream();
			oos = new ObjectOutputStream(s.getOutputStream());
			oos.writeObject(user);
			ois = new ObjectInputStream(s.getInputStream());
			type=(MessageType) ois.readObject();
			gf=(Group_Friend) ois.readObject();
			myapp.setChilds(gf.getFriends());
			myapp.setGroups(gf.getGroups());
			isok=type.isOk();
			if(isok){
				Client_To_ServerThread ccst=new Client_To_ServerThread(s);
				//启动该通讯线程
				new Thread(ccst).start();
				SaveClientSocket.add(user.getUsername(), ccst);
			}
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return isok;
	}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shejizuopin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值