| Jianfei's profilethinXer's Zone!BlogLists | Help |
|
|
August 02 MSN客户端开发手记(五)写图释不成..写文件传输...好麻烦...头晕...郁闷..发现我的客户段只能接受p2p型的文件传输(就是通过服务器中转的,我也不知道为什么把这正文件传输叫做p2p)。反正头像之类的东西都是用的这种文件传输,所以就先写他了...东西多得让人头晕..发现有base64部分..索性先看看base64,找代码,无果..找文章..找到...开始用VB写...虽然vb没有位移,不过用位运算AND做的也不错...文章错误不少,险些让我以为我写错了,幸好后面跟帖的及时指正..成功写出编码部分,对中文支持很好...感觉不错..前几天还把客户端修改添加了一些小功能..还有错误..不过像个样子了...该死的VB老是出错,郁闷...睡觉去了..
第二天...接着写...成功写出解码(第一次运行出错..不是我的算法出错..该死的VB..光标指在函数名上..说变量未定义...郁闷...还以为返回数组有问题...另开工程测试函数数组返回..没问题..纳闷中...回来...F8必杀...晕..VB终于说出实情了函数中有一个变量打错了..郁闷..改正..成功..测试..居然没问题..不可思议..代码够难懂..自己都不太明白了..没关系..因为:IT WORKS WELL!哈哈.....乐极生悲.....本想复制到common文件夹中...结果还没复制呢..就shift+del+enter了(平常打顺手了,一打sift+del就带出来enter乐)在删除文件的窗口一闪而过的时候,我发现还没有复制...欲哭无泪...找恢复软件..费尽九牛二虎之力...成功...我可怜的新的XP...被一大堆恢复软件给污染了...郁闷 July 23 MSN客户端开发手记(四)值得纪念的一天
偶的MSN不仅能听到,而且能说话了...值得纪念...问题还很多...用户状态还不知道...头像...文件传输...
有名字了,thinMSN.认识我的人都知道这是什么意思.这个名字可以让人想起两个词thinner和thinXer,都指的是我,呵呵.
用户状态解决...不错...感觉很好....联系人排序...有些麻烦...成功...现在基本没问题了...聊天时只有文字...障碍不大...把界面包装一下就可以发布了...只有文字聊天...大概也只有我会用...没关系...
又过了好几天....想解决显示图释的问题...RichTextBox无果...ImageOle.dll无果...自己写?无果!...求助高手...都不理我...呜呜...谁让人家都工作,都那么忙...郁闷...不写了...包装一下程序...加了几个窗体...忘了IsChatWindow..出错...更正..加入manifest文件...初始化..XP的按钮和文本框...ok...加入了菜单...感觉比原来好多了..至少可以用了...还没声音..PlaySound很简单,懒得加入...hard-working...程序越来越大...编译的时间都尝了不少...exe在没有资源的情况下达到了144KB,巨大(vb程序一般只有即使KB)...自豪.. July 22 MSN客户端开发手记(三)郁闷的日子
那该死的服务器,把命令分到几个数据包里,把几个命令放到一个数据包里,甚至在一个命令里嵌套另一个命令....偶要疯狂了...把这些命令分解开来成了问题...问题突然严重起来.. ..写...MSG包麻烦....该死的VB6的UNICODE....就不告诉你一个汉字几个字节....幸好有StrConv和**B的函数(像InStrB之类)....对那几个函数失去了信心....自己写字节处理...成功...第二天...有些小问题...解决...发现消息处理仍有巨大漏洞...重写....嗯,越写越好了....不错...对消息处理得很好....MSG包没问题了....OK...写CHL的回复QRY...忘了除去消息结尾的vbcrlf...成功...基本无低级bug...开始写发送消息...发现窗体的重复问题(对于同一个人因出现两个聊天Session而出现两个聊天窗口)...有待解决... July 20 MSN客户端开发手记(二)接着写...上回说到utf8解码成功。本来该接着写了,比如写添加联系人,和聊天。结果,potato发现了一个bug,像“裳思”这样以“思”字结尾的,还有其他的像“通” ,会出现问题。我测试,发现的确如此,甚至于你用UTFDecode(UTFEncode("思"))返回的都不是“思”,郁闷。于是找了几个UTF8解码的VB程序,发现这是通病。郁闷。求教往上告人,最后shannon帮我解决的问题(在此感谢shannon)。其实就是把本来在字符串里存储的内容放到了Bytes数组里面了,然后不用adodb,拿别人写的UTF8解码的程序改一下就OK了。开始写聊天窗口...
郁闷死了,写联系人的处理又写了一天多,可以正常的添加删除联系人了。代码写了500多行了,还没有实现聊天功能,唉……
终于开始写聊天功能了。聊天窗口透了个小懒,直接用的原来我写的一个半成品里的窗口,看了看还不错(你是很久以前写的了)。写聊天窗口的消息处理。对于MSG包的处理有些麻烦。不过好在一切顺利。
忘了,还有URL编码的问题。其实就是utf8编码转换成%XX的形式,挺简单的。整个程序大概完成了35%
[TO BE Continued] July 18 MSN客户端开发手记(一)缘起:在请一位同学是用msn的过程中,经历了N小时的折磨,没装上msn,原因是对方对电脑一窍不通,系统是98,连ie6都没有。最后只好作罢。于是决定写一个msn的客户端。
开始了.....17日
开发语言VB6.找资料:MSN 协议,最后找到一个特别强的站点(专业):http://www.hypothetic.org/docs/msn/resources/projects.php
然后,一步一步开始写了。winsock挺好用的,直到身份验证(https)才出现问题。按说明发送验证请求,等待....服务器没反应。没反应???再试,还是不行。这样郁闷了将近一天的时间,用sniffer抓数据包,发现别的程序的验证都是加密的,偶得不是。然后找https和ssl,找了半天,没有现成的可用。然后开始找其他的msn客户端,用vb写的。找了两个,自己写的ssl验证的,无法运行。最后找到一个可以运行的(发现源代码里有乱码,第一处费了半天劲改正过来,可以通过验证,然后发现后面还有一大堆乱码,vb调试时是解释执行的,不会全编译执行,因此一些语法错误运行时才发现。发现乱码太多了,改不过来了,这个msn的客户端就只能验证,不过这足够了)。查看它的https验证,发现居然是用WinHTTP Serivces写成的,那是一个组件。同时发现使用WinHttp的方法和VC++里操作HTTP的方法一样,看来vc也是调用的这个族建立的函数。嗯,第一步,nexus服务器通过,然后开始真正的验证。发送请求,返回....发现返回的结果和协议上说的哪一个都对不上。郁闷....这里瞧瞧,那里瞧瞧,无果,最后不得已,和前面提到的那个msn客户端一句一句的对比,才发现我丢掉了一个语句,是winHTTP的一个莫名其妙的选项。不管怎么说,终于得到了ticket用于登陆。发送ticket...服务器没返回任何结果就closed了。又郁闷。找了半天没找出原因。只好再浏览那个msn协议的网站,终于在一篇文章里提到,如果服务器没有返回任何错误就closed,是因为ticket长度不对。我比较我的ticket和别的程序的ticket,发现程度相同。陷入困顿。后发现多发送了一个\r\n(就是vbCrLf,回车加换行)。改正。哈。服务器终于返回:USR 6 OK...高兴。然后又发现返回的昵称是乱码。这是什么编码呢?试验多次,发现是utf8。后来在那个msn协议的网站上也提到了这一点。于是找utf8解码。找啊找,找啊找,没找到vb版的(vc版没看懂,没法改成vb)。后来发现一篇文章里用"adodb.stream"来解码,试验成功。adodb好像是数据库的东西,不知道通用性怎么样。现在就坐到这里了...发现自己才做了大约10%,路漫漫其修远兮,吾将上下而求索(哈,这句话都收录到微软拼音2003的词库里了,不用修改,80mb的词库果然不错),程序就写到这里了,待续...
|
|
|