+|=(src>>48)&0xFF;
*p++|=(src>>40)&0xFF;
*p++|=(src>>32)&0xFF;
*p++|=(src>>24)&0xFF;
*p++|=(src>>16)&0xFF;
*p++|=(src>>8)&0xFF;
*p++|=(src)&0xFF;
len=9;
*ret=buf;
return0;
}
这段代码的作用就是把一个长整型的数据封装进入字节流,并且字节流的首地上返回给二级指针。
业务模块就好理解很多了,比如转发一个客户端传递来的消息,通过用户id的标示找到相应的用户,再从用户注册在服务器的消息找到相应的客户端,然后把消息通过socket传输给另外的客户端。
韩海花了整整半夜才完成了服务器的编写,要不是很多东西他都写过,也不可能这么快,一个新手如果写一个聊天服务器,从入门到上手就需要一个月,当然新手是指的工科毕业生的水平。
接下来该编写客户端了,客户端和服务器就不同了,客户端需要一个载体,这个韩海早想到了,这个时候豌豆射手的攻击,已经无法破开普通丧尸的防御了,所以韩海准备把它改成通讯工具,想想大家每人肩膀上一个豌豆射手,然后对着它的炮筒通话是中什么样的画面。
韩海一想到这个,就感觉有无穷的动力,作为一个理工男的恶趣,还真不是一般人可以理解的。
韩海回了回神,打开了豌豆射手的数据模型,然后开始了长时间的阅读,这一次因为还是改写炮筒攻击方位的模块,所以他是有操作权限的。
但是这一次韩海需要大改这个模块的函数了,因为韩海要把攻击的功能,完全改写成一个收听声音和播放声音的组建,好在豌豆射手天生有听觉模型,并且在炮筒上也长着嘴巴,韩海只需要把这两样功能模块,进行取样和转发就可以了。
到了这一步,韩海就必须使用钩子技术了,他一共编写了2个篡改函数,因为函数的原型韩海可以看到,所以篡改以后的函数可以无缝对接原来的功能,从而不影响以前的程序。
第一个篡改的是豌豆射手收听声音的函数,他只不过是从中截取了每一帧声音的数