连接选项
conn_serv.tmpl模板包含一些连接配置,这里将主要的进行说明:
{
"logic_serv":$logic_serv,
"log_file":"conn_serv.log",
"max_conn":10000,
"listen_addr":"$listen_addr",
"manage_addr":["$m_addr"],
"zlib_on":1,
"valid_conn":1,
"enc_type":3,
"rsa_pub_key_file":"cfg/rsa_public_key.pem",
"rsa_pri_key_file":"cfg/rsa_private_key.pem",
"monitor_inv":5
}
- logic_serv:对应的上游logic_serv的proc_id
- log_file:该进程的本地日志
- max_conn:最多连接数目
- listen_addr:监听的地址及端口
- manage_addr:管理进程的地址
- zlib_on:是否进行数据压缩1打开. 0:关闭
- valid_conn:是否进行连接基本验证1:打开 0:关闭
- enc_type:加密方式 后面说明
- rsa_xx: 当使用RSA加密时的公私钥文件 后面说明
- monitor_inv:每次像管理进程汇报的间隔时间(秒)
连接验证
对应于conn_serv.tmpl配置项的valid_conn.如果打开验证则需要连接成功后的第一包客户端使用lib/net/net_pkg.go:VALID_CONN_KEY上行,否则会关闭连接。同时如果使用了加密,在通过验证的回包里会捎带DES&AES的密钥和RSA的公钥.
- 客户端代码如下:(game_cli.go)
func ValidConnection(conn *net.TCPConn) bool { //pack pkg_buff := make([]byte , 128) pkg_len := lnet.PackPkg(pkg_buff , []byte(lnet.CONN_VALID_KEY) , lnet.PKG_OP_VALID) if pkg_len <= 0 { fmt.Printf("valid connection pack failed! pkg_len:%d\n" , pkg_len) return false } ...