JAVA - 让一个程序与另一个程序交互

时间:2014-04-05 20:11:49

标签: java ipc

我正在努力学习如何让不同的程序互相交流,但在线查找信息对我来说是不可能的。我是一名自学成才的Flash / PHP程序员,最近学过基础java。

让我们假设有一个用Java编码的游戏,我可以访问它的开源代码。如果我想为它制作一个帧每秒显示,我现在可以用现有的知识轻松地做到这一点。我打开Eclipse,检查代码并找到正确放置FPS计数器的位置,重新编译游戏并使用新的重新编译版本。

这不是我现在想要学习的东西。我想做的是创建一个独立的.exe或.jar文件,当我运行它时,它将在游戏中显示FPS而不重新编译它。我们看到人们一直这样做。我正在玩一个新的拉斯维加斯现在用一个mod打开一个.exe文件,在游戏中显示一个叠加图。

然而,我不知道如何实现这样的目标。这些程序背后的逻辑究竟是什么?我应该阅读哪些主题来了解如何做到这一点?

如果FPS示例太复杂,我会尝试更简单的一个。我有一个打印Hello World的程序。我想创建另一个运行Hello World的程序,但是将字符串更改为其他内容。再说一遍,我甚至不知道从哪里开始。

谢谢

1 个答案:

答案 0 :(得分:2)

您正在寻找的搜索关键字是" IPC" (进程间通信)。有许多解决方案,请参阅herehere了解一些起点。

大多数解决方案涉及以下一种或多种形式:

  • 套接字
  • 共享内存
  • 命名管道(在支持它的平台上)
  • 将数据存储在文件/数据库中
  • 其他自动化(例如Windows上的OLE,工具包自动化等)
  • 更多...

在您的情况下,基本的基于网络套接字的解决方案将非常简单(您的游戏运行基本服务器,您的监视器应用程序连接并定期查询您的游戏提供的帧速率;这允许本地和远程监控并涉及相当少量的代码)。在Java Interprocess Communication处有一些相关的搜索起点。

针对您特定的" hello world"例如,这实际上是一个不同的案例。这可以通过让打印程序获取指定字符串的命令行参数,并让调用程序使用适当的命令行参数执行它来实现。