查询在线游戏服务器获取其状态Delphi - Indy 10

时间:2013-12-22 14:31:25

标签: delphi minecraft indy10 bukkit

我试图找出如何在a之间建立连接 德尔福应用程序和一个在线游戏服务器,在这种情况下,Minecraft与Bukkit一起运行。

搜索没有成功,但我有一个模糊的想法 使用Indy 10组件?像TIdTCPClient 但我认为它需要一个处理程序,我不知道哪一个。

然后我想问。

如何查询在线服务器?

使用PHP: https://github.com/FunnyItsElmo/PHP-Minecraft-Server-Status-Query

有什么想法吗?

抱歉我的英文 感谢。

2 个答案:

答案 0 :(得分:2)

正如MJN所说,一旦你Connect()到服务器,你就会使用TIdIOHandler.IOHandler属性来根据需要读/写数据,例如:

var
  data: TIdBytes;

Client.Host := AHost;
Client.Port := APort;
Client.ConnectTimeout := 3000;
Client.ReadTimeout := 3000;

Client.Connect;
try
  Client.IOHandler.Write(Byte($FE));
  Client.IOHandler.Write(Byte($01));
  Client.IOHandler.ReadBytes(data, 2048);
finally
  Client.Disconnect;
end;

// parse data as needed...

答案 1 :(得分:1)

TIdTCPClient无需额外的“处理程序”即可与服务器连接。

TIdTCPClient实例包含IOHandler(作为属性公开)。

使用此IOHandler从服务器读取字节。

Minecraft服务器状态查询的PHP source code似乎很简单,易于理解,将它移植到Delphi是没有问题的。