meta data for this page
📚 差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
reference:dataserver [2024/03/11 21:34] – bibiboxs | reference:dataserver [2025/07/17 19:27] (当前版本) – 移除 bibiboxs | ||
---|---|---|---|
行 1: | 行 1: | ||
- | < | ||
- | # DataServer(数据服务器) | ||
- | > `DataServer`是《沙盘引擎》服务器附带的**额外数据服务器(UDP)**,在每次Socket方式的服务器建立时自动开启(Steam服务器方式则不会启动),用于除游戏逻辑通讯外的其他网络交互。 | ||
- | ## 服务器机制 | ||
- | 数据服务器在每次【游戏服务器】启动时自动开启,并尝试以`Socket Port + 1`的方式选择端口号。 | ||
- | |||
- | 因此,例如正常游戏服务器的端口是8192,那么如果8192+1的端口**没有被占用**,游戏服务器将启动成功,并且端口被设置为8193。 | ||
- | |||
- | 如果端口被占用或其他原因导致启动失败,`DataServer`相关功能将无法正常使用,**但并不会影响游戏服务器的正常运行**。 | ||
- | |||
- | **==特别注意:因为端口号+1的机制,服务器主机如果希望使用`DataServer`的相关功能,请确保防火墙、安全组、端口映射等同时开放了(UDP)端口及端口+1。==** | ||
- | |||
- | **==特别注意2:任何与`DataServer`之间的功能交互,必须使用`Port+1`的端口,而不是原游戏服务器的端口。==** | ||
- | |||
- | ## 服务器查询(Query) | ||
- | 当数据服务器正常开启之后,将允许接收来自第三方的UDP数据报,并自动验证是否为`Gamespy`协议信息或提交至`World.OnDataServerReceive()`事件中。 | ||
- | |||
- | 如果开发者希望实现**外部查询服务器信息**的功能,可以使用`Gamespy`的简单查询机制,也就是向`DataServer`发送UDP数据报`\querystats\`,即可接收到当前服务器的最新信息(Json格式)。 | ||
- | |||
- | **注意:由于`DataServer`的端口+1机制,因此在发送数据报时需要向`' | ||
- | |||
- | ## 接受外部UDP数据报 | ||
- | 当数据服务器正常开启之后,除引擎内置的`Gamespy`相关指令外,其他数据内容将提交至`World.OnDataServerReceive()`事件中,同时开发者也可使用`World.SendSocketData()`方法进行UDP交互。 | ||
- | |||
- | **==注意:能正确使用`DataServer`的前提是“数据服务器已正常启动”,并且外部用户能正常访问到服务器地址及端口。==** | ||
- | |||
- | </ |