`

山寨版QQ-开发纪实

阅读更多

先上几张图吧:

  启动时:

 

启动后

 

聊天中:

 

传文件

 

第一版:客户端以事件模型实现UI与通信分离;服务器端使用阻塞IO+对象数据库;

第二版:服务器端使用Mina框架NIO模型+缓冲队列+异步多线程消息处理提高消息收发性能;

自定定原始字节通信协议,实现QQ基本消息格式(登陆,加好友,文件传送....)

用户Q号和密码md5传送;聊天消息以用登陆后收到服务器发来的key以des加密.

 

 项目组长胡海亮(QQ:249782944)

 通信协议定义的文档见附件:

  • 大小: 39 KB
  • 大小: 25.6 KB
  • 大小: 56 KB
  • 大小: 48 KB
分享到:
评论
30 楼 一个我看雪 2009-12-20  
应该都是要swing做的吧~
29 楼 chendw_hz 2009-12-17  
这个应该是swing做的吧 还是flex LZ能否说一下说用的相关技术
28 楼 javafound 2009-11-16  

msgHead: |4byte(包总长)|4byte(序号)|1byte(包类型)|4byte(目标Q)|4byte(接收Q)
+
file msgBody:|1byte(文件包总数)|1byte(文件包序号)|20byte(文件名)|N byte(文件数据)
27 楼 i2534 2009-11-16  
不知道LZ是怎么实现mina的文件传输的,请不吝赐教。
26 楼 finding006 2009-11-14  
这里发帖也太严了吧,顶贴也不行
发点有技术含量。这个我也做过,美化没楼主的好…………
25 楼 ivywjhua 2009-11-13  
"第二版:服务器端使用Mina框架NIO模型+缓冲队列+异步多线程消息处理提高消息收发性能;"

异步多线程 是什么意思啊?
24 楼 LK.Bing 2009-11-13  
苍天啊,大地啊,我什么时候能达到这种水平啊?
23 楼 lirong1978 2009-11-13  
  现在的牛人真多
22 楼 qiangailei 2009-10-31  
我们毕业就是做这样一个山寨qq 呵呵
21 楼 sosyi 2009-10-18  
不错。。
20 楼 xici_magic 2009-10-18  
嗯  看上去真的很山寨啊  要是能把源码弄出来大家一块看看就好了 
19 楼 houzhaowei 2009-09-07  
我以前也做过个,貌似比这个界面好看多了,完全仿真的
18 楼 jakewow 2009-09-06  
hailiang0901 写道
Hooopo 写道
楼主是湖大的?


中南大学的 qq;249782944

跟楼主一样是中南大学的,学习了楼主的使用jFreeChart实现web实时设备状态的图形化监控,受益匪浅。谢谢楼主
17 楼 markwang 2009-07-22  
不错啊,呵呵
16 楼 javafound 2009-06-19  
不基于UDP 就没有技术含量 :
  这确实,UDP丢包率较高,如果用UDP,理论上,我们得自己实现TCP的差错重传控制.很有难度,这个.

至于xmpp :
这个是开放的基于xml的协议,jabber上有N多客户端api(如spark)可以下用.我们连代码都不用写了,自定义是为了好玩,通信的核心就是协议。

支持QQ协议吗?:
  这个有试过,一帮子学生用抓包工具分析了一个月QQ通信时的字节码,屁规则都没找出,十分的邪门,就做罢了。期待有luma朗玛QQ第二出现。

P2P这块:
只装了个limewire(http://www.limewire.com/)试了下,jxta也一直没闹懂,望有高手demo下。

还有就是如何识别出内网中的一台机器:
  这个简单,组播一下就成了,参看一个基于JGroups的虚拟教室项目(http://www.iteye.com/topic/402068)



15 楼 shansun123 2009-06-19  
myreligion 写道
支持QQ协议吗?

这个问题问的。。。要是支持QQ协议的话腾讯就甭混了。。。
建议LZ看看XMPP协议,就不用自己再花时间去定义这么一套通讯协议了。
14 楼 dch1287 2009-06-04  
果然很山寨
13 楼 CoxZhang 2009-06-04  
LZ的思路是用服务器转发的,如果再深入一下,可以考虑下以P2P的方式,服务器只维持在线用户列表和状态。实际的通讯,文件的发送等都是以P2P的方式进行。

这个比较有深度,以前研究过一段时间。重点是客户端之间的握手,还有就是如何识别出内网中的一台机器。。。

时间长了都忘了,LZ加油,这个如果鼓捣出来了,JAVA网络这块基本就可以说熟了。
12 楼 fjlyxx 2009-06-04  
LZ有兴趣可以瞧瞧飞鸽的实现原理. 客户端监听要考虑外网能否访问到客户端的问题.如果是长连接那么你定义的这种数据包不怎么适合.就是勉强可以 客户端和服务端的数据包解析工作将异常麻烦(长连接的数据包必须全收或者全不收 不然会影响系统稳定性).
11 楼 myreligion 2009-06-03  
支持QQ协议吗?

相关推荐

Global site tag (gtag.js) - Google Analytics