网络的阶梯第一话:
成也Winsock,败也Winsock
Winsock控件,全名:Microsoft Winsock Control 6.0!就是它,送给了我欢乐与希望。也是它,给我带来失落和伤脑筋!是它,带领我走入网络编程。也是它,让我迷惑不已,到处碰钉!气死我了,本来想搞个有文学一点的开头。但实在压不住那火去想!本来语文都不好的了,现在还加把火...我不行了啊...!结果到论坛上连发几个回复“这个问题,在VB+Winsock控件的情况下,解决不了!”。这种程度,有点像某某公司回复客户时说的那样子。唉,感慨还颇多的……,作为blong的开版第一篇,写好点吧!尽量啦...
先来说说怎么个“成也”。
之所以加上“”,是因为此“成也”非彼成也。“成也”我的解释是成长之路也(标题可不要这么想哦)。
记得,当初接触Winsock这个控件的时候。从MSDN上抄下个代码贴到VB上,成了~嘿!这就可以进行网络通信啦?不像《Windows网络编程》说得那么辛苦啊(那时还没看懂,现在也没:)。开心之余也带点兴奋(很易情绪化,叫:单纯吧!)。不相信,拆开来编译!放到两台机上试。真的行啊~还是不信。找QQ上的朋友试(笨得到家)。朋友意见:不错嘛~可以做个私人聊天软件了。可是看不见自己说的话!要再加油啊……。这回信了,VB不是拿来玩的,真的能行啊!好,行了!接下来要干嘛?聊天软件?没那份闲情逸致。要聊天怎么不用QQ,傻的!这回来真的,接下来要干嘛?没了!想不到...
第一回的Winsock应用就在MSDN那个例子上修修改改结束了!得出一个结论用Winsock耍网络通信就这么个样:easy!但真正需要应用来了。这时,我已经在一家网吧里做了一个月的半人半Dog!系统装了还原恶灵,还有尾萍的网官。C盘开机就还原,结果之前放到尾萍上的图标全消失了。每一次添加完都要重启机器保存,麻烦嘛。不行,得想个办法~。长时间观察之后发现,一般都是一些外桂,和试服登陆器更新的较快,游戏都会自己更新,不管!那可不可以把外桂、登陆器放到别的机器上,然后让开机自动到网络上主机上找呢?这样的好处更新随意,又不用次次输密码入网管系统。不错嘛,嘿!晕了,“你用的是Windows 2000 Professional影射驱动器只能支持20个连接”,真黑啊!好,看官们都想到了。这下就要用VB+Winsock来做这活(当时真笨,怎么不搞个D版Server来呢?)。好,说做就做。那时候简直不当作是简单的传文件。把整个监视都做上去了,准备那台机关机,位置都能一目了然。Codeing...出来了,哗,一群人围上来看。什么东西什么东西?等等,我就在这台机上搞个客户端来试试。噢,那是机器的坐位表吗?真的跟外面的布局一样哦。哇,是它关机了吗?我慢慢的说:这是模拟测试!当场晕了几个。(话说回来,要知道那里关机在网管里不就有看吗?再不是就打印一个坐位表出来,一对就是了,用不着搞那么多,又笨了一次!)之后,进入对文件传送的部分了。我先把文件放到一个目录下,用命令行,使RAR把它压缩了。然后列一个表,标上那个是什么外桂,什么版本等等,传到客户端!一切正常,OK!之后就要从客户端发出命令,服务器发送文件了。糟糕,文件是怎么发送的?不明白,上google,搜!一大堆。选啊选!没有一个可以用的。晕了,难道就胎死腹中?我能放弃也顶不住悠悠众口啊。不行再努力!先是读文件,然后送出,之后接收,然后写入!没什么大问题。OK搞定了~啊?问题又出来了,当第二个客户端又要文件怎么办?那就处理多连接吧,MSDN上也提到了一点。没关系~先是建立控件数组,第0个永远侦听,由第一个开始接受连接,把已加载的控件数组用一个布尔数组来标识,加载了为True,同时用时间控件定时检查Wisncok的State属性,不正常就Unload了,把在布尔数组相应的下标设为False。以布尔数组的最大下标为最大连接数,以时间控件所检查到的,正常的控件为当前连接数……。
就这样,一个局域网自动更新程序出来了。现在想起来,那时候真的很开心。看见成果出来了,投入使用。那种就是传说的:“成就感”吧!后来本打算再扩充一下,增加上网络MP3播放的功能。但感觉在那网吧做得好累,老板属于《九种老板不可追随》其中之几种合成的。于是就退隐山林了。
在家里过了个春节,于是便想找找惜日的童趣“网络游戏”。不过这次有点例外,不是完全的玩。搞起试服服务器来了,认识了一个在开发这个服务器的朋友。由于服务器过于简单,我就很不经意的顺便把环境配置那部份做上来了。搞了一个他说是像填空式的配置程序!哈哈,有这等事!填空啊。但后来服务器的多方面都出现了问题,甚至某大侠说重写主模块都来了!我也就没有再去管了。想起,当初也曾跟着某高手的代码写过小半个外桂。这下来试试做外桂怎样?哈哈,还不给我抓到你。指的是封包的数据,别误会你被抓了!呵呵~我用Winsock帮网游客户端与服务器这之间做了个代理,那封包不就全经过我的程序了?哇,看不懂啊!什么东西,乱七八糟!之后就这样不了了之...
接着,到论坛上把在网吧里研究到的资本拿出来,骗到不少分!心想,网络编程,在Winsock控件底下都变得如此透明了,还怕什么呢!好事成双。在论坛上泡了个多月,混到五个三角啦(不过到现在也没变化了)。接着又不小心看到了《P2P之UDP穿透NAT的原理与实现》。作者很好人,把问题都说得好透彻。看了一会,完全明白了。虽然还没真正用上过,但相信,要是遇到这情况也能轻松驾驭了!
看到这里,你是否有觉得,我轻浮了?真的,那时候好像什么都不在话下了,一下子就手到拿来似的!那时候心想,要是用Winsock,好像什么都不会怕似的。甚至于搞了个简单的电子邮局系统,在本地用FoxMail收啊发啊,自己写情信自己收,爽得很!接下来的一部分,真的让我这种快活得比快活林还过瘾的心情掉进谷底,你想知道是什么吗?
欲知后事如何,且听下回分解。(真的很累,不过今天打算不睡了。)
qyii
2004年11月29日 凌晨作案