三、LumaQQ对“强制显示QQ隐身好友”实现原理的解释
关于LumaQQ是如何将QQ隐身好友“打回原形”的,如果你是程序员出身,可以直接去研究一下LumaQQ的源代码,源代码可以到http://lumaqq.linuxsir.org/main/?q=node/71下载获得。
其技术原理,LumaQQ的开发者,一位来自清华的高手Luma,在其开发文档(http://lumaqq.linuxsir.org/main/?q=node/view/74)中以一篇题为“如来神掌为什么只要10块钱”的文章(原文在:http://lumaqq.linuxsir.org/article/rulai.html)给了简单的解释。(相关文章:【软话连篇】有关挂QQ的荒唐事!)
让我们看看Luma是如何实现这一功能的,以下部分摘抄自LumaQQ开发文档:
何谓神掌
神掌为什么能探测隐身?这是很多人想知道的问题,其实很简单,为什么很简单而不是很复杂?因为如来神掌只卖10块钱,10块钱的东西能复杂吗?哦,错了,好像说了等于没说哈?那我给你看看如来神掌的主要实现代码,就知道为什么只卖10块钱了:
/**
* 探测对方是否隐身,如来神掌,万无一失
*/
public void detectHidden(int receiver) {
if(user.isLoggedIn()) {
SendIMPacket packet = new SendIMPacket(user);
packet.setMessageType(QQ.QQ_IM_UDP_REQUEST);
packet.setReceiver(receiver);
packet.setTransferType(QQ.QQ_TRANSFER_FACE);
packet.setFileName("");
packet.setFileSize(0);
packet.setFakeIp(true);
monitor.putRequest(packet);
port.add(packet);
}
}
有的人看了之后,就以为如来神掌是传一个0字节大小的文件,这当然是不对的,传文件的话,如果对方不接受,又有什么用呢?就好像网上曾经流行的发视频请求去探测隐身一样,如果别人不接受,那又有什么用呢?所以如来不能这么做,如来确实是要传东西,但是如来要传一个对方在线就无法拒绝的东西。 点击查看发表评论>>>
QQ里面什么东西是你无法拒绝的,显然有一个:自定义表情。你隐身的时候,你的好友给你发自定义表情,你能拒绝吗?不能。自定义表情能不能传过来,那是另外一回事,并不影响如来神掌,为什么,后面给你解释。(相关文章:十大幻想:腾讯QQ之精彩未来世界!)
QQ的文件传输
文件传输有很多情况,可以直连,也可以通过服务器中转,还有什么UDP,TCP方式之分。但是一开始的时候是一致的:我要先发传送请求,然后对方会回答接受还是拒绝。刚才说过了,自定义表情是没有机会让你去拒绝的,所以,只要对方在线,我就会收到回复包。