RakNet-- Message Filter Overview
消息过滤概览 |
通过类别限制进入系统的消息 对于Client/Server拓扑,你可能不想任何系统发送一些消息。例如,或许只有服务器可以发送kill消息。或者可能想要将玩家分为各个阶段,已经登录的用户,但是没有提供他们的密码,那么就不能发送游戏消息。消息过滤器的设计主要是用于自动处理这些情况。 MessageFilter插件通过“filterSet”定义了用户类别,filterSet是一个用户提供的数字标识。例如,你在系统中需要给新连接的系统提供一个过滤器集,对于已经认证的系统则需要赋值另外一种过滤器集。对于每一个过滤器: 1. 自动增加新的连接 2. 允许RPC调用 3. 限制什么消息,或者什么范围的消息可以接收,如果条件被违反,做出何种动作,丢弃还是缓存。 4. 删除规则集。
例子:
messageFilter.SetAutoAddNewConnectionsToFilter(0); messageFilter.SetAllowMessageID(true, ID_USER_PACKET_ENUM, ID_USER_PACKET_ENUM, 0); messageFilter.SetAllowMessageID(true, ID_USER_PACKET_ENUM+1, ID_USER_PACKET_ENUM+1, 1);
这个设置会自动增加所有的新连接到过滤器,设置为0。仅仅允许ID_USER_PACKET_ENUM消息到达。它也会创建一个新的过滤器集,将filterSet id 设置为1,它允许ID_USER_PACKET_ENUM+1消息进入。
总是允许进入的消息(过滤它们没有任何作用): ID_CONNECTION_LOST ID_DISCONNECTION_NOTIFICATION ID_NEW_INCOMING_CONNECTION ID_CONNECTION_REQUEST_ACCEPTED ID_CONNECTION_ATTEMPT_FAILED ID_NO_FREE_INCOMING_CONNECTIONS ID_RSA_PUBLIC_KEY_MISMATCH ID_CONNECTION_BANNED ID_INVALID_PASSWORD ID_MODIFIED_PACKET ID_PONG ID_ALREADY_CONNECTED ID_ADVERTISE_SYSTEM ID_REMOTE_DISCONNECTION_NOTIFICATION ID_REMOTE_CONNECTION_LOST ID_REMOTE_NEW_INCOMING_CONNECTION ID_DOWNLOAD_PROGRESS 参考Samples/MessageFilter中的完整例子。参考MessageFilter.h文件,了解所有的函数和参数的完整列表以及注释信息。 |
![]() |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步