博文

[创亿无限][转帖]qq的协议,基于http,c类语言(2006-01-10 15:14:00)

摘要:有一年没有发表文章了,最近我为了一个项目对QQ协议进行研究,有些心得,不敢独享,故把其中一项协议--基于HTTP的QQ协议V1.1的不完整成果,拿出来与大家分享一下。大家说到QQ协议都觉得很神秘,是因为QQ不像MSN或者ICQ协议都已经官方公布了,而QQ的没有公布。研究它的人也不是特别的多,虽然已经有了基于QQ协议所写成的第三方软件 foicq, qq plugins for gaim, LumaQQ,但是由于他们是基于二进制Stream的协议过于复杂,大家阅读代码也有一定的难度,再加上网络上解析QQ协议的文章也不是十分多,所以基于QQ网络协议的应用程序也是寥寥无几的。现在我就把基于HTTP的QQ协议进行一个粗浅的剖析,希望对大家有所帮助。源码部分就用我喜欢的DELPHI和现在比较流行的C#语言对QQ协议的实现进行具体分析。    1、找寻支持QQ HTTP协议的服务器。    大家也许会被一些假像所迷惑,也许会认为QQ的HTTP服务器是基于80口进行通信的(如:218.17.209.23:80),其实不然,正真基于HTTP的服务器应该是:http://tqq.tencent.com:8000,它是一个通过8000口进行通讯的服务器。由于QQ的HTTP服务器并不支持HTTP协议中GET方法,它支持POST方法。所以我们要给QQ的HTTP协议传参数,那么就必需要用POST方式才行。    2、C#和DELPHI是实现HTTP的POST方法的通信。    C#:    C#里System.Web空间下提供了一个叫做WebClient的对象,使用此对象就可以使C#直接对服务器发送WEB客户端的请求。那么我们要对服务器提交POST方法那么就必须使用其UploadData()方法才行。首先把要请求的信息先转换为字节(因为POST提交的是字符的流数据),然后再做为UploadData()的参数。使用UploadData()进行数据提交,最后返回,POST的回馈信息。如下:    WebClient _client = new WebClient();    string ......

阅读全文(2521) | 评论:4

刷qq空间人气的工具(2006-01-05 21:13:00)

摘要:刷qq空间人气的工具请去试试http://cd99.008.net/huazhen/ShowPost.asp?id=230 ......

阅读全文(6616) | 评论:9

[创亿无限][星河游戏]客户附加功能(2005-12-30 15:54:00)

摘要:现在许多人在研究网格计算,我们的客户端也可以考虑提供这个功能 游戏中完家可以选择接受联合运算请求,那么一旦有人向星河游戏服务器买计算能力时 服务器可以把任务分配下去。每个愿意参加联合运算的完家的计算机承担一部分计算能力 有许多人参加这个计算能力就很强了,相当于一台超级计算机 当然由于参加计算,完家可以获得游戏币补偿,这个是对双方都有好处的事 用途:黑客破解密码也许用得着,当然只有打外国人时才允许;其次预测天气也用得着,如果客户够多,星河可以自己发布气象信息卖给各大媒体,由于咱们的计算成本很低,所以价格也低,竞争力一定很强......

阅读全文(3022) | 评论:2

[创亿无限]不经过服务器的聊天程序2(2005-12-29 10:54:00)

摘要:上回说了如何聊天,这回说如何摆脱一开始的主服务器 其实客户端应该能够选择主服务器,这样就是真正摆脱了主服务器的束缚,因为客户可以自由选择主服务器的话,哪个主服务器还敢得罪客户呢??? 那么应该开发个主服务器端安装工具,任何只要支持数据库的空间都可以安装,呵呵,其实主服务器说白了就是个数据库嘛 客户可以选择是否在主服务器注册,这个注册其实只是给自己个存放基本信息的空间,象自己经常去的主服务器以及自己的已注册好友的主服务器和id,当然你也可以选择不注册,而把自己的信息导出,放在自己的空间里,又或者你有自己的数据库,你可以选择保存到那个数据库里,这都是你自己选择的 你也可以把自己的信息文件放到邮箱里,等下次登陆时把信息文件下载下来,然后再选择导入信息,当然不导入也行啊 或者你在家完全不用管他什么信息文件,你不保存在主服务器也可以保存在本地 很自由,哈哈......

阅读全文(2283) | 评论:2

[创亿无限]不经过服务器的聊天程序3(2005-12-29 10:54:00)

摘要:补充说明服务器的功能 1,服务器是个数据库,尽此而已 2,服务器可以安装在任何支持数据库空间里 3,服务器可以提供个人空间(这个需要用户在本服务器注册)供用户保存自己需要的基本信息,比如其他已经注册过的好友所在的服务器名和id名 4,服务器之间可以相互连接提供查询,方便从一个服务器跳转到另一个服务器 5,客户登陆主服务器后得到的当前聊天室列表叫做服务器大厅,客户可以选择聊天任意聊天室进入,前提是对方让你进入......

阅读全文(2457) | 评论:0

[创亿无限][星河游戏]地图缓冲想法(2005-12-29 10:21:00)

摘要:完家可以从服务器一直接走到服务器二,这个就有必要说到地图缓冲拉 完家从服务器一直接走到服务器二必然有个过程就是进入缓冲地带时,后台端开与服务器一的连接,然后连接上服务器二 在这个过程中,完家实际是在自己本地上的地图上游荡 但是这样一来真实性就没有了,比如有个完家在服务器一的地图边上时碰到一个人一起走到服务器二去,由于中途段开连接,完家就会发现自己的朋友突然不见了,这个真实性就大打折扣拉 所以我的想法是 1,首先,完家的聊天系统必须自成体系,跟游戏无关,不在游戏也能聊,这样,完家断开与服务器的连接还能继续和好友聊天,真实性有了点保证 2,在完家进入缓冲地带时,以完家为中心,构建个临时的世界,由完家的电脑来充当临时服务器,所有他看得到的人都在他的电脑创造的世界里继续前进,直到与服务器2建立连接为止 各位可能会问,这些完家间的数据如何交流呢?还有如果完家的个人电脑断线,其他完家怎么办?这个请各位参考我写的“一个不经过服务器的聊天程序的原理”这篇文章里的聊天原理,你就会知道如果完家电脑断线怎么办拉,原理都差不多,无非是聊天的程序是传递的信息是文本数据,游戏的传递的是游戏数据,本质上都是数据的传输......

阅读全文(3474) | 评论:7

[创亿无限]怎样提升自己在pfan的blog知名度(2005-12-29 09:57:00)

摘要:有不少人是从pfan的blog首页看到我的blog的吧 1 发现这个pfan的blog是有漏洞的,如果我将自己的tag前面都加个[创亿无限],那么肯定都是新tag,要不了多久。pfan的新tag上全是我的空间宣传了 2 每个新发表的文章都会显示在pfan的blog首页,我可以采取统一规范,象我的空间是叫“创亿无限”,那么我所有发表的文章前面都加上“[创亿无限]”,这样只要你勤快点,一口气发他个20篇文章,相信这时blog首页全是你的文章,哈哈,大家看到的全是你的,pfan的blog首页变得好象是你的了,呵呵 3 认真发帖子,回答问题,积累知识,这是真正的方法,前面的都是娱乐而已 请pfan老大注意了:赶快修改规则哦,对了,别删除我这个文章哈......

阅读全文(3187) | 评论:3

[创亿无限]我对PFAN的建议(2005-12-29 09:50:00)

摘要:这个blog 最大的不好就是不允许非注册用户留言,这点非常不好 当然我知道老大是想让许多人来注册,但是这点造成的不方便会让许多人跑到别的地方 做blog,那么最终受损失的还是pan的blog......

阅读全文(2778) | 评论:4

[创亿无限]一个不经过服务器的聊天程序(2005-12-28 20:00:00)

摘要:我用qq最恨他过滤我的信息了,但没办法,信息传递要经过qq服务器 所以我设计了个新的原理,不经过主服务器传递聊天信息 服务端 这个聊天当然有服务器端的,不过这个是为了方便用户储存一些个人数据,方便在网吧的用户,该服务器端有注册用户的数据,象密码什么的,这个就是起个身份识别作用,我不说了 服务器端有个数据库,这个很重要,用来存储登陆用户的标志号码(这个是分配的,不是注册的),以及第一个登陆用户(也就是开服务的)的ip,还有加入聊天的用户的ip,和该聊天室的名称 当聊天用户发送下线请求时,服务器的数据库里把该用户数据删除,很简单吧,呵呵 客户端 客户端聊天有两种模式, 一种是直接开服务然后把自己的ip告诉别人,叫别人来连接自己参加聊天,这个最隐秘,基本上别人不知道就无法连到你机子上,甚至你可以改聊天端口,这样更安全,增加别人扫描的难度,真正是没开秘密会议的好地方 还有一种是登陆主服务器,选择创建聊天室或者你在主服务器注册过,可以进入你注册的聊天室,注意,这个聊天室只是给你保存聊天室名称,创建id(这个是你在主服务器注册的帐号),以及成员列表(在主服务器注册过的成员,方便快速登陆)和成员的密码(防止别人盗用你的名字发表信息),当然没注册过的不记录哈,然后你就可以等待拉 然后别的客户选择第2种模式到主服务器去搜索已经创建的聊天室,如果他选中了你,当然就给住服务器发个请求并把他的ip信息记录到主服务器的数据库里,得到你的ip和端口,然后跟你连接,这样会话就成功拉 补充细节 1 由于许多个人电脑只支持10个连接,所以要设计个模式支持上百人一起聊天,我的想法是,第一台服务器一开始只单独连接9个客户,如果第10个加进来的话,主服务器会自动告诉他第2个客户的ip和端口,你的服务器跟第10个客户并不直接传递信息,而是第2个客户充当转发服务器把大家发到你的这里来的信息转发给第10个客户,第10个客户发的信息也通过第2个客户转发给你 当第21个客户连进来时,主服务器告诉他的是第3个客户的ip和端口,传递信息和第2个一样 这样可以保证直到100个人在一起聊,而你的电脑才连接10个客户,不增加负担 当然如果要支持200个也行,只是聊天可能要卡点了 2 当你的电脑推出连接后,系统会告诉第2个客户,要他承担你的责任,同时选一个进来最早的又没有充当转发服务器的客户......

阅读全文(7846) | 评论:9

[创亿无限]另类刷屏幕(2005-12-28 19:19:00)

摘要:输入一行字 程序从hzk16文件中取出每个字的点阵信息 用该字组成点阵,形成个大的字 (比如,输入日字,用日字组成个大的日字) 然后把最后形成的字放进剪贴板 然后用户在需要的地方粘贴 该方法在qq群中最适用......

阅读全文(3128) | 评论:1