博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ERLANG学习总结<二>
阅读量:7155 次
发布时间:2019-06-29

本文共 1541 字,大约阅读时间需要 5 分钟。

一、代码初接触

      1.我们来启动程序吧
         刚开始导师发下来这个复杂的程序时,完全没有头绪,怎样子才能让它跑起来呢?刚开始看到了好多makefile文件,想来应该是用make命令来处理,折腾了半天发现windows下make不好使了。终于在角落里发现了Script这个文件夹,里面已经把编译的操作写好了,果断使用之。然后在ERLANG的目录下使用OTP中最常用用的application:start()函数,结果一上来就给了我一大堆错误,仔细的看了下错误日志,发现是一个叫sasl的东西没有启动,于是先启动sasl,然后就顺利启动了我们的MGEE啦。
      2.出错了怎么办?
         服务器启动着,客户端在FLEX下也跑起来了,然后点了下登录,立马就出现了一大堆错误日志,一点点的找,发现时socket被关闭了,然后在AS的代码中发现了段发送无用数据和关闭socket的语句,问了下正辉,果断干掉这几句话,然后又出现了服务端的一个函数不存在的错误,这个函数的作用是解析用户名和密码,找了很久不见这个函数的存在,于是,在看了下用户名和密码的数据结构后,自己写了个函数来解析它吧,把公共的接口用上,就得到了一个正确的解析函数。
        在MGEE的错误日志中,可以利用的东西太多了,当出现错误的时候,可以根据错误日志一步步的找到最先出错的函数,这样能够快速的定位出错点,为进一步的修改提供极大的方便
      3.绝对利器Appmon
        文件这么多,怎么去查看进程间的关系呢?这时候就需要用到一系列的工具了,Appmon能够给予我们关于进程关系的直观视图,通过Appmon,能够看到整个程序的组织结构,其中个别进程的入口点,当前状况。通过使用Appmon,成功的把自己的进程挂在了mgee_sup下面。
二、深入理解,协议设计
      1.天啊,自动生成的.hrl文件
        一直找不到一个game.pb文件,然后才发现这个文件居然是自动生成的,这样做的目的是为了确保服务端和客户端使用一样的协议。
      2.PROTO是个什么东西?
       Proto是个神奇的玩意,通过不一样的编译方式,我们可以方便的通过它来实现将其转化成ERLANG的hrl文件以及AS的文件,其中需要注意的是在写Proto文件的时候,大括号的左边不能出现在单独的一行里,否则会报出错误的。
      3.自己的协议
         在对MGEE的代码有了一定的了解之后,开始参照组队系统来写自己的协议,整个好友模块通过<<"friend">>来做module通过mgee_router进程来进行转发,而在我自己的好友进程中,我再通过处理不一样的method来把要处理的数据cast给我们的好友进程。
三、编码实现
      1.给自己来一张ETS
         好友关系必须要保存起来,有两种方式可以实现,ETS和进程字典,在这里我使用了ETS的方式来保存每个roleid的好友和黑名单。
      2.翻出来好多有用的函数
         仿照Team模块的一些方式,通过mgee_misc和mgee_role的导出函数,可以通过roleid获得一系列的公共数据,这样就不要自己再单独的去实现,公共的函数能够实现一系列公共的功能。
      3.一定要判断数据的格式
         导师说过做游戏服务端就是要先对数据进行大量判断后再进行计算,在开始的时候,很多错误都是由于没有对传来的数据进行判断导致的,通过对数据的格式,其内能进行一个判断后,再进行自己想要的操作,这样能够极大的保证程序的健壮性。
四、总结
      通过这一次MGEE中好友模块的添加学习,使得我对真正在应用的ERLANG服务端程序有了深入的了解,其模块化的实际方式,其漂亮的协议都是值得我长时间去学习的。

转载于:https://www.cnblogs.com/polarisalo/p/3916309.html

你可能感兴趣的文章
Ali流量控制中间件Sentinel
查看>>
微信小程序里多出来的奇怪宽度
查看>>
Java中的static关键字解析
查看>>
2个rman自动恢复的脚本
查看>>
香港药品 ref
查看>>
spring学习总结一----控制反转与依赖注入
查看>>
健康日志7-11
查看>>
模式匹配之尺度空间---scale space
查看>>
makefile编写---单个子目录编译自动变量模板ok
查看>>
MBR (主引导记录)
查看>>
win10汇编环境的搭建
查看>>
周末学习记录(摘抄为主)
查看>>
智能ERP 交接班统计异常的解决方法
查看>>
UnityWebSocket
查看>>
仿手机长按事件
查看>>
JXJJOI2018_三题
查看>>
关于未来房价
查看>>
Android开发, 引入jar包到 Android Private Libraries方法
查看>>
CSS3 实现的一个简单的"动态主菜单" 示例[转]
查看>>
Hibernate使用详解(一)
查看>>