教你从新写游戏处事器框架
游戏行使 UDP 协议的特点:一样平常来说 UDP 是无毗连的,可是对付游戏来说,是必定必要有明晰的客户端的,以是就不能简朴用一个 UDP socket 的fd 来代表客户端,这就造成了上层的代码无法简朴在 UDP 和 TCP 之间保持同等。因此这里行使 Peer 这个抽象层,正好可以办理这个题目。这也可以用于那些行使某种动静行列中间件的环境,由于也许这些中间件,也是多路复用一个 fd 的,乃至也许就不是通过行使 fd 的 API 来开拓的。 对付上面的 Transport 界说,对付 TCP 的实现者来说,长短常轻易能完成的。可是对付 UDP 的实现者来说,则必要思量怎样充实操作 Peer ,出格是 Peer.fd_ 这个数据。我在实现的时辰,行使了一套假造的 fd 机制,通过一个客户端的 IPv4 地点到 int 的对应 Map ,来对上层提供区分客户端的成果。在 Linux 上,这些 IO 都可以行使 epoll 库来实现,在 Peek() 函数中读取 IO 变乱,在 Read()/Write() 填上 socket 的挪用就可以了。 其它,为了实现处事器之间的通讯,还必要计划和 Tansport 对应的一个范例:Connector 。这个抽象基类,用于以客户端模子对处事器提倡哀求。其计划和 Transport 大同小异。除了 Linux 情形下的 Connecotr ,我还实现了在 C# 下的代码,以便用 Unity 开拓的客户端可以利便的行使。因为 .NET 自己就支持异步模子,以是着实现也不费太多工夫。
Protocol (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |