0

我有一个在 Rails 中运行的网站。这是为了测试和学习没有什么花哨的东西,否则会有很多流量。我正在为朋友运行我的世界服务器,并想创建一个 Rails 应用程序来与之交互。只是因为。我的问题是最好的方法是什么。一旦你启动我的世界服务器,它就会一直运行,直到你杀死它。在您玩游戏时,所有日志信息都会显示在服务器屏幕上。您也可以在服务器上输入命令来控制世界。所以我想要的是一种记录服务器输出的新信息并登录数据库以及发送新命令的方法。如果这很难,那很好,我只是在寻找经验。

4

1 回答 1

1

stdoutMinecraft 服务器在和上都有输出stderr。它还接受来自 的输入stdin。有关标准流的更多信息,请阅读维基百科文章。

您所说的项目非常先进,需要了解 Unix 进程和线程。

通常,您的程序需要:

  • 为和为您的程序可以处理的流stdout创建流stderrstdin
  • fork

然后在子进程中:

  • 重定向stdoutstdinstderr到创建的流
  • exec我的世界服务器

在父级中:

  • 启动一个监听 Minecraft 服务器的线程stdoutstderr
  • 启动一个线程来监听stdinMinecraft 服务器并与之交互
  • 可选地,与 Minecraft 服务器的所有通信应该在它自己的线程中完成

如果您刚开始使用 Ruby/Rails 或提到的其他技术,这可能会令人生畏。几年前,我编写了Tartar,这是一个 Rails 应用程序,基本上可以完成您想要做的事情。我建议看一下,也许它可以帮助您入门。我会从minecraft:startrake 任务开始。请注意,这是 2 年前的事情,它可能不再与 Minecraft 服务器兼容。

注意:这不适用于 Windows。

于 2013-06-26T00:37:18.467 回答