山寨版QQ-开发纪实先上几张图吧:? 启动时:??聊天中:??第一版:客户端以事件模型实现UI与通信分离;服务器端
山寨版QQ-开发纪实
先上几张图吧:
? 启动时:

?

?
聊天中:

?

?
第一版:客户端以事件模型实现UI与通信分离;服务器端使用阻塞IO+对象数据库;
第二版:服务器端使用Mina框架NIO模型+缓冲队列+异步多线程消息处理提高消息收发性能;
自定定原始字节通信协议,实现QQ基本消息格式(登陆,加好友,文件传送....)
用户Q号和密码md5传送;聊天消息以用登陆后收到服务器发来的key以des加密.
?
?通信协议定义的文档见附件:
11 楼 myreligion 2009-06-03 支持QQ协议吗? 12 楼 fjlyxx 2009-06-04 LZ有兴趣可以瞧瞧飞鸽的实现原理. 客户端监听要考虑外网能否访问到客户端的问题.如果是长连接那么你定义的这种数据包不怎么适合.就是勉强可以 客户端和服务端的数据包解析工作将异常麻烦(长连接的数据包必须全收或者全不收 不然会影响系统稳定性). 13 楼 CoxZhang 2009-06-04 LZ的思路是用服务器转发的,如果再深入一下,可以考虑下以P2P的方式,服务器只维持在线用户列表和状态。实际的通讯,文件的发送等都是以P2P的方式进行。
这个比较有深度,以前研究过一段时间。重点是客户端之间的握手,还有就是如何识别出内网中的一台机器。。。
时间长了都忘了,LZ加油,这个如果鼓捣出来了,JAVA网络这块基本就可以说熟了。 14 楼 dch1287 2009-06-04 果然很山寨 15 楼 shansun123 2009-06-19 myreligion 写道支持QQ协议吗?
这个问题问的。。。要是支持QQ协议的话腾讯就甭混了。。。
建议LZ看看XMPP协议,就不用自己再花时间去定义这么一套通讯协议了。 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)
17 楼 markwang 2009-07-22 不错啊,呵呵 18 楼 jakewow 2009-09-06 hailiang0901 写道Hooopo 写道楼主是湖大的?
中南大学的 qq;249782944
跟楼主一样是中南大学的,学习了楼主的使用jFreeChart实现web实时设备状态的图形化监控,受益匪浅。谢谢楼主 19 楼 houzhaowei 2009-09-07 我以前也做过个,貌似比这个界面好看多了,完全仿真的 20 楼 xici_magic 2009-10-18 嗯 看上去真的很山寨啊 要是能把源码弄出来大家一块看看就好了 21 楼 sosyi 2009-10-18 不错。。 22 楼 qiangailei 2009-10-31 我们毕业就是做这样一个山寨qq 呵呵 23 楼 lirong1978 2009-11-13 现在的牛人真多 24 楼 LK.Bing 2009-11-13 苍天啊,大地啊,我什么时候能达到这种水平啊? 25 楼 ivywjhua 2009-11-13 "第二版:服务器端使用Mina框架NIO模型+缓冲队列+异步多线程消息处理提高消息收发性能;"
异步多线程 是什么意思啊? 26 楼 finding006 2009-11-14 这里发帖也太严了吧,顶贴也不行
发点有技术含量。这个我也做过,美化没楼主的好………… 27 楼 i2534 2009-11-16 不知道LZ是怎么实现mina的文件传输的,请不吝赐教。 28 楼 javafound 2009-11-16
msgHead: |4byte(包总长)|4byte(序号)|1byte(包类型)|4byte(目标Q)|4byte(接收Q)
+
file msgBody:|1byte(文件包总数)|1byte(文件包序号)|20byte(文件名)|N byte(文件数据) 29 楼 chendw_hz 2009-12-17 这个应该是swing做的吧 还是flex LZ能否说一下说用的相关技术 30 楼 一个我看雪 2009-12-20 应该都是要swing做的吧~