英雄远征Erlang源码分析(2)-网关服务器的启动

本文详细介绍了游戏网关服务器的启动过程,涉及sd_gateway_xxx.erl模块,从启动脚本开始,分析了网关服务器如何初始化数据库,启动监控树,创建sd_gateway和mod_disperse进程。sd_gateway_server:start_raw_server/3方法用于建立端口监听,start_accept/2创建接收客户端连接的进程,socket_loop/5维护进程池。整个流程详尽地阐述了客户端连接、协议处理及断开后的操作。
摘要由CSDN通过智能技术生成

上一篇文章解析了游戏源码的结构,我们知道该源码包含两个服务器的启动脚本:网关服务器和游戏服务器,其中网关服务器用于在玩家选择进入游戏服务器之前获取服务器列表,游戏服务器则处理玩家进入游戏服务器后的登录,进入游戏操作。

先来说说游戏的网关服务器部分的启动过程,和网关服务器相关的代码为sd_gateway_xxx.erl。

运行script/gateway.sh文件,从sd:gateway_start/0部分启动名为gateway的应用,找到gateway.app中的{mod,{sd_gateway_app,[]}},进入sd_gateway_app:start/2,进行初始化数据库,启动sd_gateway_sup监控树的操作。

进入sd_gateway_sup,在监控树下挂两个进程:sd_gateway和mod_disperse,前者为网关的具体实现通过循环等待来自客户端的tcp连接,处理协议号为60000和60001的请求(具体协议内容可以查看doc/60网关协议.txt);后者为在有新的节点加入集群时进行通知,在游戏服务器部分也有应用,此处先不展开说明。

从sd_gateway:init/1进入,可以发现其调用了sd_gateway_server;start_raw_server/3方法,其代码如下:

start_raw_server(Port, Fun, Max) ->
	Name = port_name(Port),
	case whereis(Name) of
            undefined ->
                Self = self(),
                Pid = spawn(fun() -> code_star
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值