|
楼主 |
发表于 2015-4-9 07:12:26
|
显示全部楼层
7 —— socket7 O* q. K2 C+ R, O9 P
侯博士手下就四五个人,还包括了会计出纳秘书,实际干活的绝对不超过三个人。小董一来就被委以重任,侯博士问他,“小董啊,你想做哪方面的?”7 C5 P+ t! S/ m) [7 l
董延明矜持一笑,道:“听凭侯总安排。”$ K5 @5 z/ x+ n R, C3 q# ]
结果侯总安排一样,他说不熟练,再安排一样又说一个月做不完。侯博士也不知道董大侠是真不会还是被吴博士下达了禁手令,总之不是个很配合的手下。有心冲他发脾气又明确的知道这只是自己借来的人,有心撵走又怕走了连这样人也借不来了,左右权衡最终无奈的大手一挥道:“这样吧,你去给大隆那个模块写一个socket就可以回去了!”
4 B8 x8 [0 ]7 f, r 侯总的表情董延明在自己做leader的时候终于有了充满质感的体会——那是一种明明做着婆婆却仍然像小媳妇般受气的无奈,包含的尴尬和苦闷足够充满一个热气球。
% x/ j# l/ C" _0 }: b, `! r 刘大隆是侯博士手下唯一个写代码的,见到董延明就跟见了亲哥一样,溢美之词有如钱塘大潮。董延明惭愧的领受了他的溢美之词,然后特诚恳地说自己不会写那个“骚什么”。刘大隆恍然大悟的样子说,“哦,明白了,你们那边从来不写这个级别的代码是不是,嘻嘻,真不好意思,我们现在写的代码确实比较低级,没想到啊,还能打你们个措手不及……”4 L/ f9 \' h# u) f Q" ` t
刘大隆一口一个你们,董延明知道他是把吴博士和他小董放在一起说了,以为都是一等一的高级程序员,惭愧的更加厉害了。刘大隆接着说,“其实socket都是一个模式,就是按相同的顺序调用相同的函数,咱也不用管设计的细节,调用就好了。哦,对了,你要设个buffer,从文件里面读,然后再传……”" l; j5 q; c( M. F, G- G$ `% H0 ]& `9 K
董延明装作很懂的样子点点头,心里想的却是借着刘大隆不知道自己的水平的机会咸鱼翻身——没有人想一辈子混日子当烂泥。他对刘大隆说:“这玩艺我真没写过,了解的不多,你那有没有这方面的书借我看看啊?”
9 o7 i6 j* W3 y' h 刘大隆说,“我还真没有,不过市面上随便一本书就能写socket的写法,你这样,去书店买本吧,我这还有风云书店的购书卡呢……”
: `4 ^5 }) O, | 9 P/ ?/ y) P7 a7 [
就这样董延明第一次得到了公款购物的机会,而且是上班时间去书店购书,他觉得有点兴奋,吴博士的这么发配也变得不是那么令人恶心了。果然是随便一本书都讲了socket,董延明觉得自己很可笑,因为socket似乎是个常识性的知识,他最终买了一本《VC编程100例》——后来这本书被当作垃圾扔掉了。; L' Z) c! i5 @6 y% X/ |
他抱着本书,按照书上的步骤一步一步的写函数,写端口,就好像上大学时和龚明明他们一起抱着《电脑爱好者》注册QQ一样。他写呀写,写了两个星期才算编译通过了。他突然有种空虚的满足感,因为他生平完成的第一段code居然是个按图索骥的工作,说按图索骥都是高抬,分明是照猫画虎按葫芦画瓢。# {; ?& [2 l, j0 k9 N; Q
他把编译通过的结果告诉刘大隆,刘大隆问他测过没有,他又愣住了。# w% C- y7 j; e3 ~0 c. S
说段题外话,董延明大学课程设计和毕业设计也写过简单的应用程序,不过也都是些单机版的应用程序,稳定性之类的问题都没有列入考虑的日程。董延明是个善用小聪明的人,他能把一个画图版加上抽象的名字和炫目的外观而让老师给自己打A,却不懂得利用测试来提高产品的稳定性。当然了,这个问题归咎于董延明的人品也有失公平,毕竟当年他的老师们也吃这套,软件产品的测试和稳定性对于那帮二把刀老师们也是一个陌生的概念。董延明大学的时候老师们对学生课程设计的关注只到底层功能实现的程度,对于编程技法完全忽略,至于稳定性更是不曾深究过,他们经常对学生提一些功能上改进的问题,仿佛一群购买产品的客户一样。2 m1 T! @, c, R) Z9 k. I0 X
董延明大学的毕设是个很古怪的题目——中医专家系统,小董是下了功夫的,去中医学院的同学那里借了三本教科书,认认真真从头到尾的读完了,可惜关于软件架构一点也没有思考过。他就是在面板上设了几条路径每条路径设了几种按钮,每一种病症都对应了数据库里的几味中药,这就算完成了。顺便说一句,这个软件还经常的无故死机,更恐怖的是要连接access的方式是使用delphi的软件设置,每次启动都要手动连接一次。即使这样董延明也得了A,但后果确是严重的——这种得过且过的陋习也遗留到了他的工作中。) R4 F. C) M+ R+ r
( e2 L" A$ {3 V/ ^; a% S 董延明问刘大隆,“隆兄,怎么测啊?”3 \2 s% B s; S3 f) n, v2 g9 i
“传个文件看看能不能成功”,刘大隆倒没有像吴博士那样不耐烦,永远都是笑眯眯的。
9 E) c* O4 d! f( |, c, h5 r 结果董延明一传就弹出error对话框了,董延明懵了,刘大隆笑了,他说:“明哥,你好像没有申请内存哦……”5 h+ Y/ q, `: G D( r# j) a
他也没有看董延明的反应,直接就在代码里加了几句,char * buffer = new char[1024];再运行就不弹出error对话框了。董延明紧紧地抓住椅子扶手,抑制住自己高呼“太神奇了”的冲动。
( I' D# ]4 v \ 刘大隆传送了一个文件,成功了,可是到接收端却打不开这个文件。他查了下大小,居然小了几K,刘大隆搔了搔后脑勺说,“明哥,你自己跟踪一下看看吧,是不是丢包了?”9 N7 V# Q0 v! |0 C) U
董延明也煞有介事的说,“估计是TCP和UDP的差别吧?我再测测看。”TCP和UDP的差别他也是刚才那本100例上看到了一鳞半爪,不过随口一说也能显得自己有深度,果然刘大隆默默地点了点头没有说话。9 S/ k0 q5 j* a6 X$ r0 K5 U
! G) t4 M8 P- @3 P( ]# P4 i9 i
董延明对VC还是很熟练的,他使用了解放战争时期的排雷方法——滚雷,就是逐段代码的跟踪定位,万幸这段socket代码功能简单,滚雷也能滚过来。不过董大师经手的代码不长也洋洋洒洒上千行了,其中冗余代码连篇,注释语句一句也没有,成员变量一概是a、b、c,这样也给董大师的工作带来了些许困难。
% r+ U, E" M' K5 V, M$ H$ ]7 ` 董延明定位了一个星期,最终发现接收的时候包头部分表示包大小的一个变量会经常性的变负。这还了得?它变负了,好好的文件就少一块。董延明看来看去看不明白,最终又在刘大隆的帮助下,搞懂了char型是-128到127,他传送文件的时候使用了unsigned char,是0到255,结果传过来的unsigned char被强制转换成了char,结果超过127的数字统统变成了负数。6 U* u* C6 d. R
这个问题解决了,整个程序也似乎可以完工了,董延明算算也要一个月了,长出一口气。他反复的传送了几个文件,都可以准确无误地打开。不过另一个问题是越运行系统越慢,董延明管不了这些了,含糊其辞的匆匆交上去就收拾东西打道回府了。+ w5 {6 Z5 {+ F3 p
几年后刘大隆在QQ上跟董延明聊天,时过境迁董延明说起来当初的那个程序,刘大隆哈哈大笑说,“明哥,你那个程序光申请内存没释放,太NB了,敢情你糊弄我当糊弄洋鬼子呢?”) D: g) p- u+ Q
这个时候的董延明已非吴下阿蒙,每每看见别人使用内存不当便要大骂对方是切除了脑子的猪,听说自己当年也干过这么缺德的事情却豪情顿生,嘴里还哼,“英雄不怕出身太单薄……” |
|