前段时间看到园子里有朋友开发了QQ高仿版的程序,我也非常有兴趣,以前一直有个做即时聊天程序的梦,趁这段时间工作不是很忙,就开始动手来做这个事情。根据我以往积累下来的项目经验,实现QQ的基本功能,问题应该不大。当然,我的目标并不是做一个QQ高仿版的玩具,而是希望做成一个能能够真正使用的产品(当然是免费的),并持续维护下去。想为这个聊天工具取个名字,就抽取了“叽叽歪歪”中的“叽叽”(GG)作为暂时的名称吧。

一.GG的功能规划

我想分成几个阶段来开发GG,每个阶段一个版本,从简单到复杂,从玩具到产品。大体规划如下:

1.GG V1.0

(1)登录、好友列表。

(2)文字聊天、字体设置、表情、窗口震动、截图、手写板

(3)文件传送、文件夹传送

2.GG V2.0

(1)语音视频聊天

(2)网盘

(3)远程磁盘

目前,V2.0版本已经发布,语音视频聊天、网盘、远程磁盘等功能已经实现。

3.GG V3.0

(1)GG群

(2)远程协助

(3)视频会议

4.GG V4.0

(1)聊天记录

(2)离线消息

(3)离线文件

(4)增加持久化支持

5.GG V5.0 & more...

二.框架选型

如果要完全从头开发GG,其难度可想而知,所以,利用现有的成熟框架是必要的,我们必须站在别人的肩膀上,才能做得更快更好。GG V1.0 所采用的框架和素材如下:

(1)通信框架:ESFramework

(2)语音视频:OMCS

(3)皮肤框架:SkinForm

(4)截屏类库:ImageCapturerLib

(5)图片素材:90%以上来自QQ。

ESFramework和OMCS都是园子里zhuweisky的作品,已经相当成熟,不多说。SkinForm是我从网上找的一套类似QQ界面的皮肤框架(没有专门的项目网址),有些小bug,能将就用。ImageCapturerLib也是网上找的,并有源码,我把发现的一个bug已经修复了。由于是高仿QQ,所以,GG中用到的绝大多数图片都是从QQ里面拿过来的(商用也许会有版权问题)。

三.GG V1.0 功能展现

GG整个解决方案分为三个项目:服务端GG.Server(直接将ESFramework的demo的服务端搬了过来)、客户端GG、定义消息类型和协议的GG.Core。

至于GG V1.0是如何实现的,内部并不是很难(最困难的事情都让上述框架给做了),大家可以下载源码自己研究,我就不多费口舌了。下面就截几张运行时的图片吧,跟QQ是不是非常像了?

1.登录框

2.主窗体

3.聊天窗口

四.源码下载

  下载最新版本,请转到这里

注意:如果要将GG部署到广域网,则可以在服务端的配置文件中设置监听的端口;而在客户端的配置文件中,则可以指定服务器的IP和Port。

GG最新进展总览链接:可在广域网部署运行的QQ高仿版 -- GG2013总览

大家有什么问题和建议,可以留言,也可以发送email到我邮箱:ggim2013@163.com。

如果有人有兴趣来参与GG后续版本的开发,那就更好了,尽管email给我。

如果你觉得还不错,请粉我,顺便再顶一下啊,呵呵

可在广域网部署运行的QQ高仿版 -- GG叽叽(源码)的更多相关文章

  1. 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.7,优化视频聊天、控制更多相关细节

    在广域网中,由于网络的结构纷繁复杂.而且其实时状况又是千变万化的,所以,要使广域网中的视频聊天达到一个令人满意的效果,存在诸多挑战.这次发布的GG 3.7版本尝试在这一方向上做一些努力,据我自己测试, ...

  2. 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.6,增加语音消息、语音留言等功能

    自从微信出来后,语音消息和语音留言变得非常流行,按下一个键说话,比打字要方便多了.GG在V3.6版本增加了对语音消息和语音留言(或称为离线语音消息)的支持.这两个功能的实现已经很完整,只是比较遗憾的一 ...

  3. 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.5,增加自拍头像功能、细节优化(源码)

    距离上次发版本(GG叽叽V3.4,增加系统设置.最近联系人.群功能)又有1个月了,在这个月内,由于空闲时间不是很多,所以,GG增加的主要功能只是拍照并设定其为自己头像.修改密码.删除好友.以及一些bu ...

  4. 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.4,增加系统设置、最近联系人、群功能(源码)

    自从上次版本(GG叽叽V3.2,增加离线消息.离线文件功能)发布后,我个人觉得主要的大功能都实现得差不多了,接下来的几个版本将不断优化GG的细节,提高其可用性.这次版本更新的内容主要是为GG增加了系统 ...

  5. 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.2,增加离线消息、离线文件功能(源码)

    (几句题外话:虽然就如何将GG发展为一个有商业价值的产品,我还没有很清晰明确的思路,但是从GG发布以来,通过GG认识了一些朋友,也接了一些小单子,赚了一点小钱.有了一点甜头,目前和2.3个好朋友一起做 ...

  6. 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.0,完善基础功能(源码)

    (前段时间封闭式开发完了一个项目,最近才有时间继续更新GG的后续版本,对那些关注GG的朋友来说,真的是很抱歉.)GG的前面几个版本开发了一些比较高级的功能,像视频聊天.远程桌面.文件传送.远程磁盘等, ...

  7. 可在广域网部署运行的QQ高仿版 -- GG叽叽V2.4,增加远程协助、桌面共享功能(源码)

    QQ的远程协助.或者说桌面共享是一个非常实用的功能,所以,2.4版本的GG复制了它,而且,GG增强了桌面共享的功能,它可以允许指定要共享桌面的区域,这样,对方就只能看到指定区域的桌面,这对节省流量会非 ...

  8. 可在广域网部署运行的QQ高仿版 -- GG叽叽V1.8(源码)

    距离的GG 1.0发布已经三周了,这三周内,我利用业余时间为GG增加了视频聊天的功能.个人觉得进展有些缓慢,主要是因为大多数时间都花在了UI上.由于本人不会PS,所以图片素材都是从网上一个一个搜下来的 ...

  9. 可在广域网部署运行的QQ高仿版 -- GG叽叽V2.0,增加网盘和远程磁盘功能(源码)

    尽力2~3周发布一个版本,我这次也没有失言.这段时间内,我仿照QQ的微云功能,在GG中增加了网盘的功能,而且,我还自创了一个QQ没有的新的功能:远程磁盘.正如远程桌面一样,远程磁盘允许我们像访问本地磁 ...

随机推荐

  1. 用keras的cnn做人脸分类

    keras介绍 Keras是一个简约,高度模块化的神经网络库.采用Python / Theano开发. 使用Keras如果你需要一个深度学习库: 可以很容易和快速实现原型(通过总模块化,极简主义,和可 ...

  2. 配置tomcat解压版

    配置Tomcat[解压版] 选择解压版的Tomcat的理由是可以让我们使用多个Tomcat,但是配置上就会出现一些问题,需要我们手动进行更改配置.我的Tomcat版本是:apache-tomcat-6 ...

  3. SQL Server日期时间格式转换字符串详解 (详询请加qq:2085920154)

    在SQL Server数据库中,SQL Server日期时间格式转换字符串可以改变SQL Server日期和时间的格式,是每个SQL数据库用户都应该掌握的.本文我们主要就介绍一下SQL Server日 ...

  4. vertx简单服务创建

    import java.util.HashMap;import java.util.Map; import org.slf4j.Logger;import org.slf4j.LoggerFactor ...

  5. 服务器内存UDIMM与RDIMM区别

    UDIMM 全称是无缓冲双信道内存模块(Unbuffered Dual In-Lne Memory Modules),它不支持服务器内存满配,就是最高容量了,因为使用UDIMM内存时最大使用每通道只能 ...

  6. 第三章 Docker 入门

    第三章 docker 入门 3.1 确保docker已经就绪 首先查看docker程序是否存在,功能是否正常 [#3#cloudsoar@cloudsoar-virtual-machine ~]$su ...

  7. JAVA编程心得-Eclipse/MyEclipse 中文乱码解决办法

    将别人的项目或JAVA文件导入到自己的Eclipse中时,常常会出现JAVA文件的中文注释变成乱码的情况,主要原因就是别人的IDE编码格式和自己的Eclipse编码格式不同.总结网上的建议和自己的体会 ...

  8. Python 第五天 模块(2)

    模块,用一砣代码实现了某个功能的代码集合. 有两种存在的方式 1.写到一个文件夹里面 2.py文件 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和 ...

  9. 修改win7电脑中所有文件的默认查看方式

    怎么修改win7电脑中所有文件的默认查看方式   如何设置才可以得到如下的效果:比如说打开一个盘符或者一个文件夹,进行设置之后,这个盘符里或者这个文件夹下的所有子文件夹.所有子文件夹里的所有文件都以“ ...

  10. css定位position认识

    1.绝对定位(position: absolute) 2.相对定位(position: relative) 3.固定定位(position: fixed) 绝对定位 设置position:absolu ...