基于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 blocke.printStackTrace();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return isok;}

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/63404.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于虚拟偶像的面部表情捕捉

虚拟数字人的表情动作这么丰富,是怎么实现的呢? 我们都知道虚拟数字人是通过3D建模实现的人物外观形象,而骨骼和肌肉的绑定情况决定了模型后去的肢体动作和面部表情的自然度和流畅性。目前基本都是采用骨骼绑定和混合变形绑定两种主流方式&a…

元宇宙虚拟人物风格形象应用场景制作

以前人物形象存在于现实、历史或者神话中,如今人物形象可以借助新兴VR/AR技术活灵活现地存在于网络数字世界,和真人一样具有个性标签,去说跳、直播和工作。在web3.0时代之际,元宇宙人物形象开发为我们在终极互联网世界中创造更多新…

虚拟数字人/直播/捏脸/3D/metahuman 实时人脸动作捕捉 开发笔记

拍照生成数字人 流程 手机(iphone xr以上)拍照(脸部),导入到unrealmetahuman做数字人 【中文】从0开始捏一个自己的虚拟人,手机扫描到MetaHuman做一个自己的虚拟人_哔哩哔哩_bilibili 涉及APP iphone x…

基于Pytorch深度学习的脑肿瘤分类识别

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

chatgpt赋能python:Python写完程序之后如何正确运行

Python写完程序之后如何正确运行 作为一名10年以上的Python工程师,我深知Python作为高级编程语言的强大之处。但在写完程序之后,可能会遇到运行不成功的问题。在本文中,我将为大家详细介绍Python写完程序之后的正确运行方法,以及…

chatgpt赋能python:使用Python编写股票代码:提高交易效率

使用Python编写股票代码:提高交易效率 随着越来越多的投资者加入股票市场,交易效率的重要性变得越来越高。一种方法是使用自动化交易程序来执行买卖。Python是一种脚本语言,广泛应用于数据分析和自动化交易。在本文中,我们将介绍…

Python实现手机号自动判断男女性别

python实现手机号男女性别判断 如果你觉得有用欢迎关注我吧 本文性别判断主要依靠airtest中的自动化测试实现 通过自动对比支付宝页面男女图像,从而实现男女判断 代码如下: 男女判断函数: // An highlighted block def numbe():if exists(…

猜数字游戏 python

1.运行结果 2. 源代码如下 import random n random.randint(0, 9) count 0 print(n) s int(input("please enter a number!: \n")) while True:if 0 < s < 9 and s ! n:if s > n:count 1print("is bigger")else:count 1print("is smal…

男女声识别~ you are boy or girl?

提示&#xff1a;所有代码均已开源&#xff0c;版权所有转载请标注来源&#xff0c;谢谢~ 目录 背景一、结果二、基础知识介绍1.数据读取&#xff1a;2.分帧&#xff1a;3.平滑4.端点检测 三、基音计算1.预处理&#xff1a;2.对分帧数据进行滤波&#xff1a;3.计算每帧数据相关…

使用tkinter 实现一个猜数字游戏

使用tkinter 实现一个猜数字游戏 实现效果如下 先导入我们要实现的模块名 import time import tkinter as tk import tkinter.font as tkFont import randomLOG_LINE_NUM 0后面我们开始编写实现的类 类名&#xff0c;定位为APP类 类方法里面变量初始化&#xff0c;我们后面…

skynet开发一个猜数字游戏

skynet开发一个猜数字游戏 游戏简介接口设计和实现agent服务接口room服务接口hall服务接口redis服务gate服务接口 编写skynet的config文件游戏演示总结 游戏简介 猜数字游戏目的是掌握 actor 模型开发思路。 规则&#xff1a; 满三个人开始游戏&#xff0c;游戏开始后不能退…

数字人全集

Mixlab 请查阅 Mixlab社群数字人讨论合辑&#xff0c;文末附有合辑资料汇总&#xff5e; 数字人专题分享合辑目录 #01 数字人驱动方式 离线式驱动实时驱动跨平台数字人形象统一接入工具 #02 数字人虚拟偶像制作 虚拟偶像创作与运营指南虚拟形象制作开发工具 #03 数字人实业应用…

哈登砍58分遇“里程悲” 火箭破单场3分出手纪录

资料图&#xff1a;哈登遭遇“里程悲” 资料图&#xff1a;哈登遭遇“里程悲” 中新网客户端1月17日 在17日进行的美职篮常规赛中&#xff0c;虽然哈登在45分钟的出场时间里拿到58分、6次助攻以及10个篮板的恐怖数据&#xff0c;但休斯敦火箭还是以142&#xff1a;145加时不敌…

连续21场30+ 哈登砍61分创个人生涯得分记录

资料图&#xff1a;哈登。 中新网1月24日电 北京时间24日上午&#xff0c;2018-2019赛季NBA常规赛继续进行。火箭客场以114&#xff1a;110力克尼克斯&#xff0c;此役哈登砍下61分、15个篮板和5次抢断&#xff0c;创造个人职业生涯得分记录。 上半场比赛&#xff0c;哈登21投…

NBA上周最佳球员:哈登场均54分 拉塞尔首次入选

哈登近期的表现惊艳全联盟。(资料图) 中新网1月22日电 北京时间22日凌晨&#xff0c;NBA官方公布了上一周东西部最佳球员&#xff0c;布鲁克林篮网队丹吉洛-拉塞尔与休斯顿火箭队詹姆斯-哈登分别当选。这是哈登赛季第3次当选周最佳。 拉塞尔上周率领篮网队取得3胜0负&#x…

火箭主帅德安东尼赞哈登低位防守:他是控球中锋

资料图&#xff1a;哈登。 中新网北京1月28日电 北京时间1月28日&#xff0c;火箭103&#xff1a;98战胜魔术。据NBA中文网报道&#xff0c;火箭主帅德安东尼在赛后夸赞了球队当家核心哈登的低位防守。 本场比赛&#xff0c;克里斯-保罗在缺席了17场比赛之后回归&#xff0c;…

哈登骑小牛刷街是营销炒作?你可能想多了

近日&#xff0c;哈登骑小牛电动车在上海刷街的视频和图片轰炸了微博、百度等各大平台&#xff0c;广大网友插科打诨之余不免猜测&#xff0c;这肯定是小牛电动的一次精心营销&#xff1f;虽然不排除这种可能&#xff0c;但我觉得&#xff0c;这更像是哈登自己的炒作。 哈登和…

接口怎么分批量同步数据_常规赛场均34分,季后赛场均31分,数据下滑的哈登到底怎么了...

詹姆斯哈登再一次因为季后赛中不理想的表现被球迷们推上了风口浪尖&#xff0c;其实哈登在这轮系列赛中的数据表现还是挺不错的&#xff0c;场均31.8分6.8个篮板和7.8次助攻的数据已经可以和历史上很多伟大名宿相提并论了&#xff0c;但是就算打出了这样的数据&#xff0c;球队…

姚明当年这罚球有多难?哈登欧文难复制,吉诺比利:罚不进真难

体育竞技&#xff0c;是力量和技巧的比拼&#xff0c;是心态和经验的比拼&#xff01;面对勇者&#xff0c;每个体育健儿都是雄鹰&#xff0c;他们能够勇猛的搏击长空&#xff0c;让啸声响彻云霄&#xff1b;面对智者&#xff0c;每个体育健儿都是蛟龙&#xff0c;能够畅游四海…