2012-03-22 88 views
2

我目前正在为3D绘图应用程序(用C++编写,ruby是它的脚本语言)编写一个ruby插件。 我想要做的是在与用java编写的另一个应用程序之间进行通信,两个程序都在同一台计算机上运行。 集成到3D绘图应用程序中的ruby版本相当精简并且非常基础,从我所了解的具有相当有限或不存在的套接字库中。ruby​​和java之间的通信

有关如何在两个应用程序之间交换信息的任何想法将不胜感激。

将要交换的信息量相当小。

+1

套接字,文件,数据库... – 2012-03-22 06:10:15

回答

2

您的问题可能以多种方式回答。有这么多的可能的解决方案......

一个最简单的,然而这在我脑海中,是使用standard input and standard output redirection程序(用任何语言编写)之间的沟通非常有效的方法。

您的Java程序需要执行一个Ruby程序,重定向输入/输出流。我不知道这个任务在Java中使用的函数,但是在Ruby中,方法是IO.popen(command,mode)

你的Ruby程序,叫这样,从STDIN只是读取和写入STDOUT(普通方法gets和可用于puts

你还没说你是编程什么系统,所以我不知道你的平台是否能够处理这种重定向,或names pipes(这将是第二个简单的解决方案)

+0

Windows和Mac OS.I将是诚实的,我非常自我教,当谈到编程,所以我的shell,管等知识基本上是不存在的。我是考虑将信息输出到文本文件或内存(可能不是正确的术语),而不是通过命令行让红宝石或Java知道已创建新信息并以此方式交换信息。 – BMac 2012-03-22 18:03:14

+0

我不确定你的意思,但我的建议不是关于命令行_parameters_。一个项目只是另一个项目,然后他们只是一起工作,可能需要一周或更长的时间。从技术上讲,我的解决方案就像通过file_交换信息一样,但您不需要考虑该文件的名称。在文件系统中创建一个文件_might_是一个好主意,但是你也应该决定如何处理'always grow'文件 - 它可能会最终填满你的所有磁盘空间。我喜欢你是自学的;-) – Arsen7 2012-03-26 08:03:00

0

如果性能要求不高,您可以使用计算机磁盘上的文件来更改两个应用程序之间的信息。例如,如果要将EVENT1从Ruby应用程序传输到Java应用程序: Ruby应用程序写入一个标志文件在磁盘dir上调用event1.flag,而Java应用程序启动Thead继续搜索.flag文件的目录。