我试图找出如何在a之间建立连接 德尔福应用程序和一个在线游戏服务器,在这种情况下,Minecraft与Bukkit一起运行。
搜索没有成功,但我有一个模糊的想法 使用Indy 10组件?像TIdTCPClient 但我认为它需要一个处理程序,我不知道哪一个。
然后我想问。
如何查询在线服务器?
使用PHP: https://github.com/FunnyItsElmo/PHP-Minecraft-Server-Status-Query
有什么想法吗?
抱歉我的英文 感谢。
答案 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是没有问题的。