# GG **Repository Path**: ifreeswitch/GG ## Basic Information - **Project Name**: GG - **Description**: 可在广域网部署运行的QQ高仿版 -- GG叽叽。 项目地址:http://www.cnblogs.com/justnow/ - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 116 - **Created**: 2019-02-04 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 可在广域网部署运行的QQ高仿版 *** #### 项目地址:[http://www.cnblogs.com/justnow/p/3382160.html](http://www.cnblogs.com/justnow/p/3382160.html) **查看详细请访问[作者博客](http://www.cnblogs.com/justnow/)。 ***   *(最新版本:V5.1,2016.06.01 增加了系统通知功能!)*   GGTalk(简称GG)是QQ的高仿版,包括客户端(PC客户端、android移动端)、服务端、数据库,可在广域网部署使用。我想写一个类似汇总的文章,通过这篇文章,大家可以了解到GG的全貌和最新进展,以及关于一些常见问题的解答也汇总在这里。   言归正传,对我个人而言,我的目标并不是做一个QQ高仿版的玩具,而是希望做成一个能够真正使用的产品(这个过程还有很长的路要走),并持续维护下去。 ### 已实现的功能 (01)注册、登录、查找用户、添加好友、好友列表。 (02)自拍头像。 (03)文字聊天、字体设置、GIF动态表情、窗口震动、截图、手写板、登录状态(在线、离开、忙碌、勿打扰、隐身)、输入提醒 (04)群功能:创建群、加入群、退出群、群聊天 (05)文件传送、文件夹传送(支持断点续传) (06)语音视频聊天 (07)远程磁盘 (08)远程协助 (09)共享桌面(可以指定要共享的桌面区域) (10)可靠的P2P (11)网盘 (12)离线消息 (13)离线文件 (14)托盘闪动:跟QQ完全一样,当接收到消息时,托盘会闪动对应好友的头像。点击头像,将弹出与好友的聊天框。 (15)最近联系人列表 (16)系统设置:开机自动启动、麦克风设备索引、摄像头设备索引,叉掉主窗口时关闭程序还是隐藏窗口。 (17)聊天记录:支持本地保存和服务器端保存两种方式。 (18)好友分组:新增/删除分组,修改分组名称,改变好友的所属分组。 (19)打开聊天窗口时,自动显示上次交谈的最后一句话。 (20)输入提醒:像QQ一样,当对方正在输入消息时,我这边的聊天框可以看到对方“正在输入”的提示。 (21)自动记录:GG2014会自动记录上次打开的主界面的位置、大小;最后一次打开的聊天窗口的大小;最后一次设定的字体的颜色、大小等。 (22)主窗体靠边自动隐藏。 (23)录制视频聊天。 (24)支持数据库(SqlServer 2000/2005/2008),并可以通过配置在真实数据库和虚拟数据库之间自由切换。 (25)语音视频设备测试 (26)聊天消息加密 (27)系统通知 ### 开发环境及源码入口说明 1. 服务端和PC端 :VS2010 ,开发语言:C#, .NET Framework 版本: 2.0 2. android移动端:android studio 1.3.2 ,gradle 1.3 3. 部署PC客户端时,客户端机器还需要安装 VC++ runtime(2008、2010、2013)。 4. 若是要开始研究GG的源码,客户端和服务端的入口分别是: > (1)客户端:请特别关注 MainFormPartial.cs 这个文件,客户端接收到的消息几乎都是在这个文件中处理的;GlobalUserCache类用于缓存所有的用户信息、群组信息、包括本地持久化这些信息,以及根据版本号自动更新这些信息。 > (2)服务端:请特别关注 CustomizeHandler.cs 这个文件,服务端接收到的消息几乎都是在这个文件中处理的;GlobalCache类用于缓存所有的用户信息、群组信息,并与真实/虚拟数据库进行交互。 ### 相关说明 1.如果要将GG部署到广域网,则可以在服务端的配置文件中设置监听的端口;而在客户端的配置文件中,则可以指定服务器的IP和Port。 2.麦克风、摄像头的选择可在客户端系统设置窗口(SystemSettingForm)中指定。 3.语音视频:也有很多朋友问语音视频设备的工作怎么不正常,或者语音视频不流畅,这个可以直接参考OMCS官方文档:摄像头、麦克风、扬声器、设备测试 、带宽要求。 4.特别说明一下:GG项目中,只要是我写的代码,全部都放出来了。拜托喜欢每一个dll都有源码的朋友不要再问我要其它的源码了:) ### 开发环境 1. 服务端和PC端 :VS2010 ,开发语言:C#, .NET Framework 版本: 2.0 2. android移动端:android studio 1.3.2 ,gradle 1.3 3. 部署PC客户端时,客户端机器还需要安装 VC++ runtime(2008、2010、2013)。 4. 若是要开始研究GG的源码,客户端和服务端的入口分别是: > (1)客户端:请特别关注 MainFormPartial.cs 这个文件,客户端接收到的消息几乎都是在这个文件中处理的;GlobalUserCache类用于缓存所有的用户信息、群组信息、包括本地持久化这些信息,以及根据版本号自动更新这些信息。 > (2)服务端:请特别关注 CustomizeHandler.cs 这个文件,服务端接收到的消息几乎都是在这个文件中处理的;GlobalCache类用于缓存所有的用户信息、群组信息,并与真实/虚拟数据库进行交互。 ### 版本记录 2013.08.07 -- V1.0, 登录、好友列表、文字聊天、文件传送、文件夹传送 2013.09.02 -- V1.8, 语音视频聊天 2013.09.23 -- V2.0, 网盘、远程磁盘 2013.11.05 -- V2.4, 远程协助、共享桌面 2014.04.15 -- V3.0, 注册、加好友、加入群、群聊 2014.05.16 -- V3.2, 离线消息、离线文件 2014.05.28 -- V3.4, 系统设置、最近联系人 2014.06.30 -- V3.5, 自拍头像、修改密码、删除好友 2014.08.06 -- V3.6, 语音消息、语音留言 2014.09.16 -- V3.7, 优化视频聊天 2014.11.06 -- V4.0, 聊天记录、好友分组、登录状态、GIF动态表情 2014.12.31 -- V4.1, 托盘闪动消息提醒、公开JustLib源码。 2015.03.25 -- V4.2, 主窗体靠边自动隐藏 2015.06.17 -- V4.3, 视频聊天全过程录制,生成标准的MP4文件。 2015.09.02 -- V4.4, 增加对SqlServer数据库的支持,并可以通过配置在真实数据库和虚拟数据库之间自由切换。 增加语音视频设备测试功能。 2015.09.02 -- V4.4, 客户端增加Android移动端版本。 2016.01.20 -- V4.5, 加密聊天消息,让通信更安全!语音视频优化,视频聊天更流畅! 2016.05.30 -- V5.1, 增加系统通知功能,并支持与Web集成! ## 部署说明: 1.当前版本服务端默认配置为内存虚拟数据库版本,不需要安装数据库。 2.将GGTalk.Server文件夹拷贝到服务器上,运行GGTalk.Server.exe。 3.修改客户端配置文件GGTalk.exe.config中ServerIP配置项的值为服务器的IP。 4.运行客户端,注册帐号登录试用。 5.内置测试帐号为 10000,10001,10002,10003,10004;密码都是 1。 6.若要测试android移动端,请先修改安卓源码中服务器的IP和端口,然后重新编译生成apk。 ## 如果需要使用真实的物理数据库,则需按下列步骤进行: 1. 在SqlServer 2000/2005/2008 中新建数据库GGTalk,然后在该库中执行 GGTalk.sql 文件中的脚本以创建所需表。 2. 打开服务端的配置文件GGTalk.Server.exe.config (1)修改 UseVirtualDB 配置项的值为false。 (2)修改 DBIP 配置项的值为数据库的IP地址。 (3)修改 SaPwd 配置项的值为数据库管理员sa的密码。 3.修改客户端配置文件GGTalk.exe.config中ServerIP配置项的值为服务器的IP。 4.运行客户端,注册帐号登录试用。 ### GG安卓版源码 GG安卓版本已实现如下功能: (1)登录服务端 (2)文字聊天,表情图片,消息提醒 (3)好友列表 (4)显示好友在线状态 (5)文件传输 *说明:本安卓demo属于入门级水平,目的是为了展示与PC打通的基本实现。若要将GG安卓版本的源码用于正式项目中,建议先对其进行重构,或者敬请等候后续更完善的版本分享给大家!*