Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
两个本地Java应用程序如何交互?_Java - Fatal编程技术网

两个本地Java应用程序如何交互?

两个本地Java应用程序如何交互?,java,Java,有两个裸控制台Java应用程序同时在同一台机器上运行,例如,我希望有一个类似于friend.println(String s)im我的第一个应用程序,使第二个应用程序将s输出到其stdout(而第一个应用程序stdout中将保持沉默) 如何实现这一点?套接字或RMI。一种共享访问文件,两者都定期检查。我建议使用低电平插座或RMI 编辑 添加一些链接 来自巴卢斯克- 和插座或RMI。一种共享访问文件,两者都定期检查。我建议使用低电平插座或RMI 编辑 添加一些链接 来自巴卢斯克- 和使用套接字、管

有两个裸控制台Java应用程序同时在同一台机器上运行,例如,我希望有一个类似于
friend.println(String s)
im我的第一个应用程序,使第二个应用程序将
s
输出到其stdout(而第一个应用程序stdout中将保持沉默)


如何实现这一点?

套接字或RMI。一种共享访问文件,两者都定期检查。我建议使用低电平插座或RMI

编辑

添加一些链接

来自巴卢斯克-


插座或RMI。一种共享访问文件,两者都定期检查。我建议使用低电平插座或RMI

编辑

添加一些链接

来自巴卢斯克-


使用套接字、管道、共享内存或其他东西(也许可以使用JRMI)在两个应用程序之间建立连接。为他们设计一个协议和/或API以进行通信,定义一个println服务,并让一个应用程序调用另一个应用程序。

使用套接字、管道、共享内存或其他东西(可能可以使用JRMI)在两个应用程序之间建立连接。为他们设计通信协议和/或API,定义println服务,让一个应用程序调用另一个应用程序。

你必须以某种方式在两者之间传递消息。因为它们不会同时在同一个JVM中运行,所以必须使用一种可以在机器上的不同进程之间进行通信的通信媒介

你可以:

  • (可以找到教程)
  • 管道输出
  • 共享文件访问:让
    app2
    监视
    app1
    写入的文件,并对该文件中的任何新条目作出反应
  • 使用网络:使用
    app2
    使网络套接字可用于接收来自
    app1
    的通信(通过连接到
    localhost

你选择哪一个取决于你想要完成什么,以及你需要它有多复杂。每种方法都有优点/缺点。例如,一些基于并发/文件的选项可能会产生死锁,但这些选项中的任何一个都应该提供一种可行的方法来完成您所描述的任务。如果有一些你不熟悉的技术,那么这些技术的学习曲线并不太难。

你必须以某种方式在两者之间传递信息。因为它们不会同时在同一个JVM中运行,所以必须使用一种可以在机器上的不同进程之间进行通信的通信媒介

你可以:

  • (可以找到教程)
  • 管道输出
  • 共享文件访问:让
    app2
    监视
    app1
    写入的文件,并对该文件中的任何新条目作出反应
  • 使用网络:使用
    app2
    使网络套接字可用于接收来自
    app1
    的通信(通过连接到
    localhost

你选择哪一个取决于你想要完成什么,以及你需要它有多复杂。每种方法都有优点/缺点。例如,一些基于并发/文件的选项可能会产生死锁,但这些选项中的任何一个都应该提供一种可行的方法来完成您所描述的任务。如果有一些您不熟悉的技术,那么这些技术的学习曲线并不太难。

以下是我可以想到的一些方法:

  • 使用插座
  • 使用文件并在新邮件到达时附加到该文件
  • Java消息服务
  • 使用数据库

也许使用JMS是最好的

以下是我能想到的一些方法:

  • 使用插座
  • 使用文件并在新邮件到达时附加到该文件
  • Java消息服务
  • 使用数据库

也许使用JMS是最好的

最简单的可能是JavaRMI


最强大的是通过TCP/IP的自定义协议。

最简单的可能是Java RMI


最强大的将是通过TCP/IP的自定义协议。

您需要这个:最好也需要这个:最好还需要“因为它们不会同时在同一个JVM中运行”——为什么不?它们肯定会在同一台物理机器上以相同的用户帐户运行。我假设“两个本地java应用程序”是指您将调用JVM两次,每个应用程序一次,以使它们运行。我不是说他们不会在同一台机器上,在同一个操作系统中使用同一版本的JVM;我的意思是它们将在单独的
java
进程中运行。我的意思是“我不能在同一个JVM实例上运行两个应用程序吗?”。真的,我需要这一切的唯一原因是我实际上需要两个独立的标准输出。嗯,我不明白你在这里提出的情况。如果在同一个JVM中运行两个“应用程序”,为什么不将它们合并到一个应用程序中呢?如果它们在同一个JVM中运行,为什么要使用输入/输出流而不是方法调用进行通信?你能把你的问题/例子扩展到更具体的你想要完成的事情吗?我不知道如何在同一个JVM上运行多个应用程序(我从来不知道这是可能的)。为什么不将它们合并到一个应用程序中呢因为我需要两个独立的标准输出流,既不使用GUI也不使用web/EE工具包将不同的信息输出到不同的屏幕/窗口。“因为它们不会同时在同一个JVM中运行”-为什么不?它们肯定会在同一台物理机器上以相同的用户帐户运行。我假设“两个本地java应用程序”是指您将调用JVM两次,每个应用程序一次,以使它们运行。我不是说他们不会在同一台机器上,在同一个操作系统中使用同一版本的JVM;我的意思是它们将在单独的
java
进程中运行。我的意思是“我不能在同一个JVM实例上运行两个应用程序吗?”。真的,唯一的原因