可在广域网部署运行的QQ高仿版 -- GG叽叽V3.4,增加系统设置、最近联系人、群功能(源码)
自从上次版本(GG叽叽V3.2,增加离线消息、离线文件功能)发布后,我个人觉得主要的大功能都实现得差不多了,接下来的几个版本将不断优化GG的细节,提高其可用性。这次版本更新的内容主要是为GG增加了系统设置、并完善的了群所需的基础功能。
一.GG V3.4 新增功能展现
1.群功能完善
(1)创建群
(2)退出群(同时,通知其它群成员)
2.系统设置
(1)叉掉主窗口时,关闭程序还是隐藏窗口。
(2)麦克风设备索引
(3)摄像头设备索引
(4)开机自动启动
3.其它
(1)最近联系人列表。
(2)密码不再使用明文,而是用md5加密。
(3)发现的bug修复。
废话不多说,还是先上图。
主面板变化:
创建群:
退出群:
系统设置:
最近联系人:
二.实现思路
虽然提供了源代码,但是,我还是想将主要的思路列一下,这样,大家理解起源码来,会节省更多的时间。
1. GG V3.4 在客户端增加了SystemSettings类,对应系统设置的内容。其将会被序列化保存为本地文件,默认是运行目录下的GGConfig.xml文件。
2. SystemSettings被设计为Singleton模式,第一次使用时,将会自动加载;每次修改后,将重新序列化保存。
3. 客户端增加了SystemSettingForm窗体,用于显示和设置SystemSettings的选项值。
4.客户端主界面增加了一个ChatListBox控件,用于显示最近联系人列表,在每次创建聊天窗口时,会将对应的好友置于“最近联系人”列表的顶端。(MainForm的GetChatForm方法)
5.创建群
(1)InformationTypes增加信息类型:CreateGroup。
(2)服务端:VirtualDB类增加CreateGroup方法,如果创建群成功,则创建者会自动成为群成员;CustomizeHandler类的HandleQuery增加了对CreateGroup类型信息的处理。
(3)客户端:增加了CreateGroupForm窗体,用于创建群。
6.退出群
(1)InformationTypes增加信息类型:QuitGroup(申请退出群)。BroadcastTypes增加广播信息类型:SomeoneQuitGroup(用于通知其他群成员有人退出了群)。
(2)服务端:VirtualDB类增加QuitGroup方法;CustomizeHandler类的HandleInformation增加了对QuitGroup类型信息的处理(并通知其他群成员)。
(3)客户端:在MainFormPartial.cs文件的GroupOutter_BroadcastReceived方法中,增加了对SomeoneQuitGroup广播消息的处理。
7.开机启动:GG是通过修改注册表的方式来决定是否开机自动启动,但是修改注册表需要管理员的权限,这意味着,如果要使用这一功能,必须以管理员的身份启动GG。针对这一点,我觉得不是很好。QQ是不需要管理员权限就实现了这样的功能,它是怎么做到的了?有知道的朋友请留言告知一下。(在发布的GG版本中,我屏蔽掉了实现该功能的代码,SystemSettingForm的skinCheckBox1_CheckedChanged方法)。
三.GG V3.4 源码下载
下载最新版本,请转到这里。
注意:如果要将GG部署到广域网,则可以在服务端的配置文件中设置监听的端口;而在客户端的配置文件中,则可以指定服务器的IP和Port。
关于GG的最新全貌介绍、以及如何部署、试用帐号等问题,我单独写了一篇文章,作为汇总,可参见 可在广域网部署运行的QQ高仿版 -- GG2013概要。
欢迎和我探讨关于GG2013的一切,我的QQ:2027224508,多多交流!
大家有什么问题和建议,可以留言,也可以发送email到我邮箱:ggim2013@163.com。
如果你觉得还不错,请粉我,顺便再顶一下啊,呵呵
可在广域网部署运行的QQ高仿版 -- GG叽叽V3.4,增加系统设置、最近联系人、群功能(源码)的更多相关文章
- 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.7,优化视频聊天、控制更多相关细节
在广域网中,由于网络的结构纷繁复杂.而且其实时状况又是千变万化的,所以,要使广域网中的视频聊天达到一个令人满意的效果,存在诸多挑战.这次发布的GG 3.7版本尝试在这一方向上做一些努力,据我自己测试, ...
- 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.6,增加语音消息、语音留言等功能
自从微信出来后,语音消息和语音留言变得非常流行,按下一个键说话,比打字要方便多了.GG在V3.6版本增加了对语音消息和语音留言(或称为离线语音消息)的支持.这两个功能的实现已经很完整,只是比较遗憾的一 ...
- 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.5,增加自拍头像功能、细节优化(源码)
距离上次发版本(GG叽叽V3.4,增加系统设置.最近联系人.群功能)又有1个月了,在这个月内,由于空闲时间不是很多,所以,GG增加的主要功能只是拍照并设定其为自己头像.修改密码.删除好友.以及一些bu ...
- 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.2,增加离线消息、离线文件功能(源码)
(几句题外话:虽然就如何将GG发展为一个有商业价值的产品,我还没有很清晰明确的思路,但是从GG发布以来,通过GG认识了一些朋友,也接了一些小单子,赚了一点小钱.有了一点甜头,目前和2.3个好朋友一起做 ...
- 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.0,完善基础功能(源码)
(前段时间封闭式开发完了一个项目,最近才有时间继续更新GG的后续版本,对那些关注GG的朋友来说,真的是很抱歉.)GG的前面几个版本开发了一些比较高级的功能,像视频聊天.远程桌面.文件传送.远程磁盘等, ...
- 可在广域网部署运行的QQ高仿版 -- GG叽叽V2.4,增加远程协助、桌面共享功能(源码)
QQ的远程协助.或者说桌面共享是一个非常实用的功能,所以,2.4版本的GG复制了它,而且,GG增强了桌面共享的功能,它可以允许指定要共享桌面的区域,这样,对方就只能看到指定区域的桌面,这对节省流量会非 ...
- 可在广域网部署运行的QQ高仿版 -- GG叽叽(源码)
前段时间看到园子里有朋友开发了QQ高仿版的程序,我也非常有兴趣,以前一直有个做即时聊天程序的梦,趁这段时间工作不是很忙,就开始动手来做这个事情.根据我以往积累下来的项目经验,实现QQ的基本功能,问题应 ...
- 可在广域网部署运行的QQ高仿版 -- GG叽叽V1.8(源码)
距离的GG 1.0发布已经三周了,这三周内,我利用业余时间为GG增加了视频聊天的功能.个人觉得进展有些缓慢,主要是因为大多数时间都花在了UI上.由于本人不会PS,所以图片素材都是从网上一个一个搜下来的 ...
- 可在广域网部署运行的QQ高仿版 -- GG叽叽V2.0,增加网盘和远程磁盘功能(源码)
尽力2~3周发布一个版本,我这次也没有失言.这段时间内,我仿照QQ的微云功能,在GG中增加了网盘的功能,而且,我还自创了一个QQ没有的新的功能:远程磁盘.正如远程桌面一样,远程磁盘允许我们像访问本地磁 ...
随机推荐
- SQL Server 2008 r2 输入SQL语句不能自动提示的解决办法
先利用“配置工具-SQL Server 配置管理器”关闭所有MSSQLSERVER服务,利用SQL Server Installation Center,进入Maintenance,选择Repair, ...
- 三维模型2.5D轮廓提取及遮挡部分的剔除
轮廓提取相对容易,只需在2.5D渲染视角下,导出模型的顶点坐标以及基于视角的消隐后的三角形面,将三角面投影后合并就可得到轮廓,轮廓坐标基于2.5d图的基准坐标换算就得到.提取轮廓的在我另外一篇文章中有 ...
- 如何让aspnet服务加载静态资源html(我的动态网页静态化) 转
我们知道,IIS自身是不能处理像ASPX扩展名这样的页面,只能直接请求像HTML这样的静态文件. 当客户端请求一个服务器资源时,这个HTTP请求会被inetinfo.exe进程截获(www服务),然后 ...
- final、finally、finalize的区别
看C#知识点的时候发现的问题 1.final 修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此一个类不能既被声明为 abstract的,又被声明为f ...
- win10下搭建QTP测试环境
安装环境win 10 64位企业版 个人学习用1..net 3.5无法安装更新问题解决:打开windows update 服务2.win10 安装中提示为了对电脑进行保护,已经阻止此应用,请与管理员联 ...
- TCP/IP协议和HTTP协议 浩哥指教
TCP和IP在HTTP协议的上层,HTTP算是应用层,IP协议建立的是电脑跟电脑之间的联系,具体过程是,物理上,通过网线,解析MAC地址,到达路由,路由告诉数据将要去哪里,对方电脑通过NDS解析,解析 ...
- php-4种排序
<?php$arr = array(1, 43, 54, 62, 21, 66, 32, 78, 36, 76, 39); //1. 冒泡排序 //在要排序的一组数中,对当前还未排好的序列,从前 ...
- VS与ultraedit 正则表达式替换
ASP中把request("{param}")调用替换为requestX("{param}") VS 表达式替换(?<a>request\(&quo ...
- java四种内部类
内部类有成员内部类,局部内部类,匿名内部类,静态内部类. 1,成员内部类package innerClass; public class InnerClassTest { String s1=&quo ...
- JavaScript-事件坐标
事件坐标: 1.参照屏幕左上角e.screenX,e.screenY 2.参照文档显示区左上角:e.clientX||e.x , e.clientY||e.y 3.参照所在父元素的左上角:e.offs ...