You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解析Counter-Strike 2服务器A2S_Info协议返回的字节数组?

解析Source引擎A2S_Info协议响应的VB实现方法

Source引擎的A2S_Info协议响应是以空字节(\x00)分隔的UTF-8字符串序列,针对你需要提取的服务器名称、地图、版本字段,直接按固定顺序分割解析即可,具体实现如下:

核心解析逻辑

  1. 跳过响应头:前4字节是固定标识(0xFF 0xFF 0xFF 0xFF 0x49),直接从第5字节开始处理
  2. 按空字节分割字段:遍历字节数组,将连续非0字节拼接为字符串,遇到0字节则完成一个字段的提取
  3. 按固定顺序提取目标字段:
    • 服务器名称:第2个分割出的字符串(跳过第一个协议版本数字字段)
    • 地图名称:第3个分割出的字符串
    • 服务器版本:第12个分割出的字符串

VB代码实现

Function ParseCS2ServerInfo(responseBytes() As Byte) As Dictionary(Of String, Object)
    Dim result As New Dictionary(Of String, Object)
    Dim currentByteList As New List(Of Byte)
    Dim fieldCount As Integer = 0

    ' 跳过前4字节的响应头,从索引4开始遍历
    For i As Integer = 4 To responseBytes.Length - 1
        If responseBytes(i) = 0 Then
            ' 将字节列表转为UTF-8字符串
            Dim fieldContent As String = System.Text.Encoding.UTF8.GetString(currentByteList.ToArray())
            Select Case fieldCount
                Case 1 : result("ServerName") = fieldContent
                Case 2 : result("MapName") = fieldContent
                Case 6 : result("PlayerCount") = CInt(fieldContent) ' 玩家数字段
                Case 11 : result("ServerVersion") = fieldContent
            End Select
            currentByteList.Clear()
            fieldCount += 1
        Else
            currentByteList.Add(responseBytes(i))
        End If
    Next

    Return result
End Function

关键注意事项

  • 必须用UTF-8编码转换字符串,避免BLACKBØX这类含特殊字符的内容乱码
  • 基础字段的顺序是固定的,即使服务器返回扩展字段,也不会影响目标字段的位置
  • 玩家数是数值类型,需要将对应字段转换为Integer

内容的提问来源于stack exchange,提问作者fpaezf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 13:40:55