用户工具

站点工具


server:game:net:server

Server类,管理整个服务器,创建两个TcpServer,一个内部一个外部,接收新连接,接收数据


run(InetAddress& ext_ipport,InetAddress& int_port,int threadNum)

启动函数

  • ext_ipport 外部IP 端口
  • int_port 内部IP 端口
  • threadNum TcpServer运行时线程数
1.创建内部TcpServer int_server,同时绑定onConnection、onMessage
2.创建外部TcpServer ext_server,同时绑定onConnection、onMessage
3.构建终端处理器(运行时接收外部命令)

onConnection(const TcpConnectionPtr& conn,conntype t)

新连接处理

  • TcpConnectionPtr 连接对象
  • conntype 连接类型(内部or外部)
1.总的连接数加1
2.创建上下文context对象 conn_ctx(外部连接)或session_ctx(内部连接)
3.把全部context对象放到base_ctxs_,外部连接单独放到server_conns_
4.context初始化

onMessage(const TcpConnectionPtr& conn, Buffer* buf)

接收数据

  • conn发送过来数据的连接
  • buf 发送过来的数据
1.conn找到对应的context
2.送入数据

Create(conntype conn_type,const char* ip ,uint16_t port)

创建新连接对应context

  • conn_type 连接类型-内部或者外部连接
  • ip 连接IP
  • port 端口
1.根据连接类型创建conn_ctx或session_ctx
2.连接初始化分配cid

newConnID()

获取新的连接ID号

1.从map中找到最新ID

Find(uint32_t connid)

根据connid获取对应的context

insert(const EntryPtr& entry)

把新的连接放入到系统容器中

1.所有连接放入base_ctxs_
2.内部连接放入server_conns_

remove()

把已关闭连接从系统容器中移除

OnTimerTick()

30s一次遍历,将已失效连接关闭

server/game/net/server.txt · 最后更改: 2018/07/24 17:36 (外部编辑)