按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
显然这货又放狗了,想到这里韩海有些好笑,这个道士职业难道不会别的吗?居然每次都是放火麒麟去打,他在后面看着,这和自己的套路貌似有点像啊,自己也是擅长宠物大军先上,自己在后面放冷子。
想到这里,他仔细抬头看去,他想要知道这个隋商是怎样应对火麒麟的,但是韩海万万没想到的是,当隋商看到火麒麟向自己奔跑而来的时候,他猛的在虚空一按,然后就随着空间抖动出现了一个银色的大门,随后他就迈步走了进去,而当银色大门消失的时候,就再也没有看到黑袍男子的身影,显然是不安套路的跑了。
这前后差距太大了吧,道士放狗前还嚣张的说不跑,这一放狗就跑,什么鬼。
“就知道,你是这个德行,想等老子走了以后再回来,我告诉你做梦,老子把你帮会全拆了。”张卓越一脸匪气的对着天空喊了一句,随后就让麒麟调转身形向着人影幢幢的战场扑去。
而此时在下方打出一片的两方人马,当看到火麒麟下降的时候,就纷纷褪去了,笑话这玩意身体都挨不得,要不想化成灰就赶紧跑吧。
于是乎,下方的战线被麒麟一冲便散,并且是麒麟来到那里,那里的战场就散去了,所以麒麟只是几个起落,就尴尬的发现已经没人可以烧了。
随后剩下的事情就简单了,军部的人马把人群一围,如数把青帮的人马绑了起来,看样子北部的战事就这样儿戏般的结束了。
韩海看到这里,有些无奈的发现,每当这个道士出场的时候,这些敌人往往都是自行褪去的,他出现的作用,仿佛只不过给必然的结局加个催化剂。
韩海想到这里,搂住颖立的肩膀,转头对着她的耳边说道:“那我们睡觉吧?”是的韩海困了,经过了半夜的战斗,此时他眼皮都打架了。
颖立看着韩海不由得翻了个白眼说道:“月清浅和月轻柔在里面了,你还是在外面凑合下吧,我先进去了哦。”说完颖立不理会韩海幽怨的身表情,她抬起头脸色温柔的对着韩海的嘴唇印了一口,随后就转身向着小屋行去了,显然是把韩海放弃了。
韩海见状,也是无奈,他走到大厅中央,看着凤凰脸色已经微微好转,而另一个铁床上则又换了一个女生,显然一个人的血量无法供给凤凰,需要多人承担。
韩海见状,自己也帮不上忙,随后和章龙打了个招呼,就回到他办公桌后面,他的专用座位上盘膝坐下,继续修炼了起来。
正文 第七十四章 再改豌豆射手
表面上,韩海是进入了修炼,其实他是打开了数据模型库,观察起来这次的收获,他记得在杀死李易龙后,数据模型仓库传来响声,是有东西入库了。
韩海在仓库中找寻了半天,终于找到了新增的这个数据模型,这是一张白色的卡片,卡片中央写着SYSTE,而在卡片偏上的位置写着sket。i,当看到这个模型的时候,韩海的心情非常愉快,这个数据模型明显是一个系统的类库,而且它的功能也是非常强大的。
可以说句毫不夸张的话,如果没有sket,那么互联网就不存在。
没错sket就是网络传输中嵌套字协议,这种协议说白了就是给你一个定量字节的传输空间,负责电脑终端间连线的一种协议方案。
而目前大规模应用于浏览器的协议,就是基于TP长连接开发出的http协议,这是一种短连接的协议,原理很简单一次请求一次返回,然后就断开连接,而大家使用的聊天软件,大部分是使用TP长连接协议作出的软件。
韩海现在拥有了sket系统库后,就可以编写一套I系统,也就是及时聊天系统(Instant essaging),这样也就可以解决团队协作中,通讯不方便的问题。
末日之后因为电力设施都被怪物破坏或者失去维护,各种移动终端都失去了作用,现在大家通讯全靠吼,这对于信息的传播非常不利,而当韩海有了这一套sket系统库后,他就可以基于自己的系统开发出多人聊天的软件了。
而且开发出这种软件后,韩海不仅仅可以自己人使用,也可以贩卖给其他人使用,并且赚取钱财,这样既方便了自己敛财,又给社会提供了服务,一举多得。
韩海想到这里,不禁笑了笑,随后韩海新建了一个项目,然后又新建了个文件夹,分别是prtl、n、re、server、ain、utils,这些文件夹对应了协议模块、通用模块、核心模块、服务模块、主函数文件夹、工具类存放文件夹。
这一次韩海编写的是一个稍微大些的项目,其中使用字符数,他预计估计了下,起码要使用20…30万之多,也就是要耗费20…30万字符能量,可见一个聊天系统的服务器实现的难度,并且写完服务器韩海还需实现客户端的编写,这里也需要耗费大量的字符能量。
不过在守城战后,韩海字符能量达到了200万,目前来说还是够他挥霍的,所以他目前不必为字符能量担忧。
然后韩海开始了漫长的编写,不过好在的是,聊天系统他之前在公司的时候写过一套,现在也能回想起来,复写一遍就好了。
韩海所写的及时聊天系统,主要分三层:协议层、功能层和业务层。
协议层主要是定义服务器和客户端传输数据包时候的约定,这一层还分2层,第一块是通讯协议层,第二块是业务协议层。
通讯协议层:主要是通用化的加密解密方案,握手、重连、断开等约定。
业务协议层:主要是处理某个用户要与某人通讯,然后给某人发出消息,断开等等约定。
协议说白了也算一种数据结构,只不过他们传播的方式是流状的,而代码去解析也需要逐步去解析,就好比写信的时候,我要告诉你一件事情,但是我雷打不动,信的第一行写的肯定是你的名字,后面才跟着是我写给你的内容。
当然没有写信那么简单,我们可能在主消息体前面加了很多标示,就像之前所说的,第一层用两个字节使用I标识,这个是属于这个通讯系统的占位符,第二层用四个字节传入了一个时间,第三层用个字节传了一个短整形7,标识这个文本的业务是传输消息,第四层用了四个字节放了一个长整形标识之后消息体的字节长度,第五层才能使用刚刚读到的消息体长度,才可以拿到定长的消息体。
在这之后,还需要解码消息体,得到真正的消息,不过这个东西一般写在客户端,服务器只负责传输就好了。
当然以上的描述只是个栗子,而真正应用中比这些数据更多、更复杂,比如一个用户传递消息给另一个用户,如果要交给另一个用户,不仅服务器要识别这个消息体发送人的身份,还要识别传递给那个人的是否存在,能不能发送等等。
功能层主要就是进行数据的一些处理,比如以下代码:
int endeLng(lng lng int sr,unsigned har **ret,int amp;ap;ap;len)
{
unsigned har *buf =(unsigned har*)all(9);
eset(buf,0,9);
unsigned har *p = buf;
*p++|= LPUSH_FT_LNG;
*p++|=(sramp;ap;amp;ap;5)amp;ap;ap;0FF;
*p++|=(sramp;ap;amp;ap;48)amp;ap;ap;0FF;
*p++|=(sramp;ap;amp;ap;40)amp;ap;ap;0FF;
*p++|=(sramp;ap;amp;ap;32)amp;ap;ap;0FF;
*p++|=(sramp;ap;amp;ap;24)amp;ap;ap;0FF;
*p++|=(sramp;ap;amp;ap;)amp;ap;ap;0FF;
*p++|=(sramp;ap;amp;ap;8)amp;ap;ap;0FF;
*p++|=(sr)amp;ap;ap;0FF;
len = 9;
*ret = buf;。。
return 0;
}
这段代码的作用就是把一个长整型的数据封装进入字节流,并且字节流的首地上返回给二级指针。
业务模块就好理解很多了,比如转发一个客户端传递来的消息,通过用户id的标示找到相应的用户,再从用户注册在服务器的消息找到相应的客户端,然后把消息通过sket传输给另外的客户端。
韩海花了整整半夜才完成了服务器的编写,要不是很多东西他都写过,也不可能这么快,一个新手如果写一个聊天服务器,从入门到上手就需要一个月,当然新手是指的工科毕业生的水平。
接下来该编写客户端了,客户端和服务器就不同了,客户端需要一个载体,这个韩海早想到了,这个时候豌豆射手的攻击,已经无法破开普通丧尸的防御了,所以韩海准备把它改成通讯工具,想想大家每人肩膀上一个豌豆射手,然后对着它的炮筒通话是中什么样的画面。
韩海一想到这个,就感觉有无穷的动力,作为一个理工男的恶趣,还真不是一般人可以理解的。
韩海回了回神,打开了豌豆射手的数据模型,然后开始了长时间的阅读,这一次因为还是改写炮筒攻击方位的模块,所以他是有操作权限的。
但是这一次韩海需要大改这个模块的函数了,因为韩海要把攻击的功能,完全改写成一个收听声音和播放声音的组建,好在豌豆射手天生有听觉模型,并且在炮筒上也长着嘴巴,韩海只需要把这两样功能模块,进行取样和转发就可以了。
到了这一步,韩海就必须使用钩子技术了,他一共编写了2个篡改函数,因为函数的原型韩海可以看到,所以篡改以后的函数可以无缝对接原来的功能,从而不影响以前的程序。
第一个篡改的是豌豆射手收听声音的函数,他只不过是从中截取了每一帧声音的数据。
第二个篡改的是豌豆射手发声的函数,这一次他需要在发出声音的队里中,加入自己从sket收到的声音数据。
豌豆射手声音的样板是标准的P,也就是Pulse de dulatin,即为脉冲编码调制。
在光纤通信系统中,光纤中传输的是二进制光脉冲“0”码和“”码,它由二进制数字信号对光源进行通断调制而产生。而数字信号是对连续变化的模拟信号进行抽样、量化和编码产生的,称为P(Pulse…de dulatin),即脉冲编码调制。
而这种样本数据一般数量级比较大,不利于传输,所以韩海使用了一个通用压缩标准AA进行编码传输,AA即是高级音频编码(Advaned Audi ding)。
目前韩海可以粗略的实现AA的编码步骤,这种压缩编码算法是有损失的算法,原理采样一段时间内的P数据,然后使用傅里叶变幻编解码,声音其实就是不同频域的振幅,叠加起来的正弦波,编码算法其实就是进行时域正弦波叠加成近方型的正弦波,而解码就是使用傅里叶反变换,把叠加正弦波解码成原来一段段的正弦波。(这里只是粗略的进行编解码)
再之后的步骤,把压缩后的音频向服务器进行发送就可以了,再由服务器转发到另外的客户端,当客户端接收到音频消息的时候,再运行篡改后的发声函数,这样就达到了通讯的目的。
当然客户端也必须建立一套身份标识,否则通讯就无从寻找联系人了,这一点韩海已经想到了,当建立模型的时候,韩海可以给每个豌豆射手设置一个数字号码,当有人想要通讯