如何为在线游戏存储会话?

时间:2012-06-01 03:13:41

标签: c++ tcp

目前,我的游戏就像这样。

用户使用TCP连接到服务器。 此时,服务器尚未分配播放器对象并将其分配给TCP客户端对象。

当用户发送带有用户名和密码哈希的LOGIN消息时,服务器会检查数据库以查看是否全部加起来,如果是,它会发送一条带有true的LOGIN_ATTEMPT_RESULT消息。然后服务器分配一个播放器然后向播放器发送一个大厅的状态,从那时起,当服务器从该用户获得消息时,它处理它并进行通信。

我没有保留会话ID或任何内容,因为它似乎没有必要。

这基本上是这样的游戏如何进行身份验证和沟通,还是我错过了重要的事情?

由于

1 个答案:

答案 0 :(得分:4)

保持会话ID很好,因为它会使TCP数据包注入攻击(序列猜测)变得更难,并且即使由于某种原因TCP连接丢失,它也允许登录的连续性。这样,“会话”和“连接”是不同的,后者可以根据需要重新建立。此外,如果您扩展到多台计算机,会话ID可用作在主机之间传递的方式(将重新创建连接但会话仍然存在)。最后,会话ID可以用作数据库密钥(同样,用于在服务器之间传递)。

如果您不需要这些,那么您可以放弃会话层。但是,似乎没有多少积蓄。