末日编程者_第七十四章 再改豌豆射手 首页

字体:      护眼 关灯

上一页 目录 下一页

   第七十四章 再改豌豆射手 (第2/3页)

然没有写信那么简单,我们可能在主消息体前面加了很多标示,就像之前所说的,第一层用两个字节使用IM标识,这个是属于这个通讯系统的占位符,第二层用四个字节传入了一个时间,第三层用1个字节传了一个短整形7,标识这个文本的业务是传输消息,第四层用了四个字节放了一个长整形标识之后消息体的字节长度,第五层才能使用刚刚读到的消息体长度,才可以拿到定长的消息体。

    在这之后,还需要解码消息体,得到真正的消息,不过这个东西一般写在客户端,服务器只负责传输就好了。

    当然以上的描述只是个栗子,而真正应用中比这些数据更多、更复杂,比如一个用户传递消息给另一个用户,如果要交给另一个用户,不仅服务器要识别这个消息体发送人的身份,还要识别传递给那个人的是否存在,能不能发送等等。

    功能层主要就是进行数据的一些处理,比如以下代码:

    intencodeLong(longlongintsrc,unsignedchar**ret,int&len)

    {

    unsignedchar*buf=(unsignedchar*)malloc(9);

    memset(buf,0,9);

    unsignedchar*p=buf;

    *p  |=LPUSH_FMT_LONG;

    *p  |=(src>>56)&0xFF;

    *p  |=(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传输给另外的客户端。

    韩海花了整整半夜才完成了服务器的编写,要不是很多东西他都写过,也不可能这么快,一个新手如果写一个聊天服务器,从入门到上手就需要一个月,当然新手是指的工科毕业生的水平。

    接下来该编写客户端了,客户端和服务器就不同了,客户端需要一个载体,这个韩海早想到了,这个时候豌豆射手的攻击,已经无法破开普通丧尸的防御了,所以韩海准备把它改成通讯工具,想想大家每人肩膀上一个豌豆射手,然后对着它的炮筒通话是中什么样的画面。

    韩海一想到这个,就感觉有无穷的动力,作为一个理工男的恶趣,还真不是一般人可以理解的。

    韩海回了回神,打开了豌豆射手的数据模型,然后开始了长时间的阅读,这一次因为还是改写炮筒攻击方位的模块,所以他是有操作权限的。

    但是这一次韩海需要大改这个模块的函数了,因为韩海要把攻击的功能,完全改写成一个收听声音和播放
加入书签 我的书架

上一页 目录 下一页