如何以编程方式从HLDS读取服务器日志?

时间:2009-01-10 00:08:33

标签: c# php udp

如何阅读和解析从HLDS(Half-Life Dedicated Server)远程发送的服务器日志?

我的理解是您可以使用命令log_address指定服务器传递日志的位置。在此之后,服务器应该通过UDP传递日志。

如何使用PHP或ASP.NET C#监听这些日志?我不知道我是应该监听传入的数据包,还是向HLDS发送数据包请求。我试图使用netstat -a监控我的UDP连接,但似乎无法解决这个问题。

注意:我想使用log_address实现,因为我无法在服务器上安装任何第三方mod来协助记录过程。我也知道HLSW,并不是在寻找像这样的客户端应用程序。

谢谢。

2 个答案:

答案 0 :(得分:0)

我知道这是一个古老的问题,但在我能找到的任何地方都无法回答。我宁愿不解释UDP,因为它已经被覆盖了一遍又一遍。但是,如果您已正确地为服务器提供了您的公共IP地址和您正在使用UDP监听的相同端口,并且您没有获得任何数据,那么实际接收数据包就有一个技巧。

您必须在服务器的标准游戏端口上向服务器发送消息。无论它是什么,它都可以为所有服务器关注“问好”。之后,您应该开始从服务器获取数据。我不确定为什么会这样,但这可能是Valve的策略,以避免他们的服务器发送任何旧IP的垃圾邮件。

答案 1 :(得分:0)

您应该查看Steam HLDS Log Parser gem。

它在Ruby中,就像那样:

  • 在你的hlds上,使用logaddress xxx.xxx.xxx.xxx yyyy,其中x是ip,y你的端口将使用UDP发送日志
  • 获取gem,并检查示例:它接收并解析日志,并显示内容。

当我说display时,实际上你可以用返回的内容做你想做的事(推送到irc,写入数据库......)。只需编写自己的“显示器”

我几天前发布了这个宝石,随时尝试贡献。 我最近添加了i18n支持英语和法语翻译。

问候。