多线程游戏服务器浏览器





5.00/5 (9投票s)
一个允许用户查询 Source 和 Half-Life 类型的主服务器和单个服务器的项目。

引言
这是一个多线程游戏服务器浏览器,支持Source和Half-Life游戏及其模组。主窗体展示了引擎当前的功能,是一个简单的独立窗体。游戏服务器查询引擎被封装在一个.DLL文件中,以便其他项目或Windows Web服务器可以访问和使用它。
背景
完全披露:代码始于Franz Pentenrieder的原始项目(gameserverinfo.aspx),由于协议不再起作用,该项目现已完全过时。我以他的实现为起点,更正了Source和Half-Life协议(在引入数据包压缩后),然后添加了具有多种不同类型的过滤器的母服务器查询。
Using the Code
请参考原始项目以了解我是如何达到这一点的。但这里有一些方法可以帮助你入门。
使用下面的QueryServer()
方法,基本游戏服务器变得非常简单:
' How to get all data about a game server
' The two main types of games supported with this implementation are:
' GameType.Source and GameType.HalfLife
' Use these objects in the QueryServer() method for testing.
Dim Server as GameServer(IP as String, Port as Integer, GameType as Object)
Server.QueryServer()
' How to display current players and current stats in a listbox:
For Each player As aQueryLib.aQueryLib.Player In Server.Players
Dim lvItem As New ListViewItem(New String() _
{GameServer.CleanName(player.Name), player.Score.ToString(), _
player.Ping.ToString(), player.Time.ToString()})
Me.lvPlayers.Items.Add(lvItem)
Next
' How to display game server CVAR results in a listbox:
For Each de As DictionaryEntry In Server.Parameters
Dim lvItem As New ListViewItem(New String() _
{de.Key.ToString(), de.Value.ToString()})
lvParams.Items.Add(lvItem)
Next
' How to display game server properties in a textbox:
Dim props As PropertyInfo() = server.[GetType]().GetProperties_
(BindingFlags.[Public] Or BindingFlags.GetField Or BindingFlags.Instance)
For Each prop As PropertyInfo In props
Try
Dim obj As Object = prop.GetValue(server, Nothing)
If obj.ToString().IndexOf("Collection") <> -1 Then
Continue For
End If
tbInfos.Text += (prop.Name & " - ") + obj.ToString() _
& vbCr & vbLf
Catch generatedExceptionName As TargetInvocationException
Catch generatedExceptionName As NullReferenceException
End Try
Next
历史
我将Franz Pentenrieder的原始项目称为版本1,而我的项目称为版本2,主要关注《反恐精英》。代码由Adam Lawson编写、优化和改进。2009年6月17日
尽情享受吧!!!