java仿QQ程序4.0_ForgetWithYou的博客-程序员秘密

技术标签: qq  java  多线程  

下载链接  http://download.csdn.net/detail/qq245034548/8391381

4 详细设计

4.1 系统程序流程如下

 

                                                                            图4.1.1 系统程序流程图

4.2 通讯协议设计

4.2.1 TCP协议设计

4.2.1.1客户端:

设计了QqClientConServer类 ,该类通过socket与服务端进行连接。主要方法如下:

1. public Message sendLoginInfoToServer(Object o)//发送登录请求

2. public boolean sendunLoadInfoToServer(Object o)//发送下线消息

3. public Message sendRegisteInfoToServer(Object o)//送注册消息

设计了ClientConServerThread类,该类继承Thread类,实现各种消息的处理。主要方法如下:

1. public void run()//线程类所要实现的函数,用于处理不同的消息处理。

4.2.1.2服务端:

设计了MyQqServer类 ,该类继承了Runnable接口。创建一个socket服务。主要方法如下:

1. public void run()//线程类所要实现的函数,用于循环接收服务端的消息

设计了SerConClientThread类 ,该类继承了Thread类。主要方法如下:

1. public void notifyOther(String iam)//通知其他在线用户我的上线消息

2. public void notifyunloadOther(String iam) //通知其他在线用户我的下线消息

3. public void run()//接收服务端的消息,并按类型处理

4.2.2  UDP协议设计

主要针对视频聊天设计,设计了VAplay类,该类继承Runnable接口,主要方法如下:

1. public VAplay(int myportint friendport,InetAddress address)//构造函数,传入我的端口号,好友的端口号,好友的ip地址。

2. private void jbInit()//播放视频媒体

3. private void speaker()//播放音频

4. public void run()//用于接收和发送视频音频信息

4.3 人机界面设计 

4.3.1服务端界面设计

 

                                                          图4.3.1 服务端界面

4.3.2客户端界面设计

                                    图4.3.2 客户端界面

                  图4.3.3 客户端界面

                                                                            图4.3.4 客户端界面

运行结果

 

                                                                                图5.3.1 客户端注册界面

                                     图5.3.2 客户端界面

 

               图5.3.3 客户端好友列表界面

 

                                       图5.3.4 客户端个人资料界面

 

                                                           图5.3.5 客户端聊天界面

 

                                                                 图5.3.6 客户端聊天记录界面

 

 

                                                                      图5.3.6 客户端发送文件界面

 

 

                                                    图5.3.7 服务端管理界面

参考文献

1. 张海藩. 《软件工程概论》. 第五版 北京. 清华大学出版社,2008.2 

2. 王珊,萨师煊.《数据库系统概论》. 第四版   北京.高等教育出版社  2006

3. 耿祥怡,张跃平.《Java面向对象程序设计》 第二版 北京.清华大学出版社  2013.9

4. 埃克尔,陈昊鹏(译).《Thinking In java 》机械工业出版社  2007.6.1

5. 李刚.《疯狂Java讲义 电子工业出版社 2008.9

6. 明日科技 《Java经典编程300例》清华大学出版社 2012


以上内容均为转载

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ForgetWithYou/article/details/78969318

智能推荐

UVA11478 Halum (差分约束)_uva - 11478_yang_bro的博客-程序员秘密

讲每个点的所有操作同一起来, 设sum[u]为u节点上d值之和。二分枚举答案x,就得到了  sum(a)-sum(b)+w(a,b)>=x ,即sum[b] - sum[a] j,权值为w。建好图后,题意要求最小边最大且大于0.那么如果最小边为原图最大边+1的时候任不存在负环,那么答案显然是inf了。而如果原图存在权值和而且这个题有点猥琐。。。spfa中,判负环的节点入队限制如果为n的话,

Profile doesn't include the beta-reports-active entitlement._Macle_Chen的博客-程序员秘密

今天通过Ad Hoc方式打包项目时候遇到了个问题:Profile doesn't include the beta-reports-active entitlement。应该是PP出错了,但这个PP文件我昨天还用来打包使用。网上大部分资料说的是:The beta-reports-active Entitlement这是很老的一篇文章,按照文中的说法,我的PP是没问题的。那么真正导致这个错误的应该是...

Qt学习 QVariant类(转)_tony-Lin的博客-程序员秘密

Qt学习 QVariant类(转)QVariant类作为一个最为普遍的Qt数据类型的联合。因为c++禁止没有构造函数和析构函数的联合体,许多继承的Qt类不能够在联合体当中使用。(联合体当中的变量共用一个存储区),没有了联合变量,我们在物体属性以及数据库的工作等方面受到很多的困扰。一个QVariant对象在一个时间内只保留一种类型的值。我们可以使用canConvert来查询是否能够转

(hdu step 1.3.1)FatMouse' Trade(在收入需要一定的付出的情况下求最大收入)_帅气的东哥的博客-程序员秘密

题目:       FatMouse' TradeTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5092 Accepted Submission(s): 1530 Problem DescriptionFatMouse prepared M p

前端框架的搭建_前端项目中框架有自己搭过吗,需要重写什么嘛_WinkJie的博客-程序员秘密

== 开发工具idea,前端使用nodejs,项目构建工具npm,使用vue各个模块和组件==1.nodejs的安装安装简单,直接安装,安装过程一般是自动配置了环境变量的,windows+r—>cmd打开命令输入以下命令查看版本信息node -vnpm -v升级npm版本,(注意都是英文字母和字符)npm install [email protected] –g...

如何正确设置PlayStation VR_culiyuan8310的博客-程序员秘密

Iren Key/Shutterstock钥匙扣/快门 The PlayStation VR (PSVR) headset plugs into PS4 and creates a bona fide virtual reality experience. But like all VR headsets, it needs lots of cables. We’ll show you how t...

随便推点

paddle深度学习之----1层线性网络进行线性回归_Vertira的博客-程序员秘密

import paddle.fluid as fluidimport paddleimport numpy as npdef load_model(inpt): # 定义一个简单的线性网络,对输入inpt进行全连接,映射为100维大小 # batchsize:一批、一组数据的大小 # 比如输入inpu:[batchsize,13],则hidden:[batchsize,100] hidden = fluid.layers.fc(input=inpt, size=10.

KDD2020 | 揭秘Facebook搜索中的语义检索技术_夕小瑶的博客-程序员秘密

星标/置顶小屋,带你解锁最萌最前沿的NLP、搜索与推荐技术文 |江城编 |可盐可甜兔子酱导读:今天分享一下 Facebook 发表在 KDD2020 的一篇关于社交网络搜索中的 em...

关于 JS 中对象和类的理解_js中类和对象_『九离~空白』的博客-程序员秘密

JS 中对象的种类 ?JS 内置的对象(如 Number 等)。 宿主环境对象(如 window,document 等)。 自己创建的对象 。在 JS 中怎么创建对象 ?字面量形式创建对象(属性,方法,get,set 型属性)。成员访问:两种访问方式(. [])。访问对象中没有的属性时,会返回 undefined。级联访问(对象里面嵌套对象)。/* 字面量创建对象 */var student = { // 属性 'name': 'wuhao', 'age': 22

SpringCloud配置文件详细说明(properties和yml)_浅然言而信的博客-程序员秘密

笔者将地址留在这里,提供大家参考,也方便自己查阅https://blog.csdn.net/xingbaozhen1210/article/details/80290588

脱离数据库和Spring的Unit Test_单元测试脱离数据库_萧 炎的博客-程序员秘密

目录1、一般的单元测试写法2、单元测试步骤3、对一般的单元测试写法分析优化4、最佳的单元测试写法:Mock脱离数据库+不启动Spring+优化测试速度+不引入项目组件原文作者:FromNowOnUntilTheEnd原文连接:https://blog.csdn.net/qq_36688143/article/details/97393949一、普遍的单元测试方法作为一个Java后端程序员,肯定需要写单元测试。我先提供一个典型的错误的单元测试例子:@RunWith(SpringRunne

【装配线调度】基于模拟退火算法实现装配线调度matlab源码_Matlab科研工作室的博客-程序员秘密

1 简介目前经济全球化不断加强,企业都在追求成本优势。机械产品装配作为生产过程的最后一个环节,在生产中起到至关重要的作用。尤其对于结构与装配工艺复杂的机械产品,在装配过程中存在各种不确定因素,因此制定出合理的装配调度方案有利于提高机械产品的生产效率,提高企业竞争力和效益。机床生产装配工艺复杂、生产制造周期长。如何提高机床制造的生产管理水平,缩短复杂机床产品的制造周期,提高机床生产的准时交付能力,是当前非常紧迫的研究课题。车间调度是一项非常有效的提高生产效率的管理手段,通过选择不同的加工机器,改变加工次序

推荐文章

热门文章

相关标签