This question already has answers here:
What is the best way for IPC in java? [closed]
                                
                                    (1个答案)
                                
                        
                        
                            Communication between two separate Java desktop applications
                                
                                    (11个答案)
                                
                        
                                5年前关闭。
            
                    
我正在编写一个小的应用程序,它将充当较大应用程序的卸载程序。我希望卸载程序能够在运行时向应用程序发送一条非常基本的消息(简单的通知)。

做这个的最好方式是什么?

我想要的插图:

public class Uninstall {
    public static void main(String[] args) {
        if(isRunning("Application")) {
            // Tell Application to clear data & exit
            sendMessage("Application","EXIT");
        }
    }
}

最佳答案

您的选择基本上是


通过文件系统

有点笨拙,但易于调试。基本上,您的主应用程序将关注文件系统(例如,通过使用WatchService。更多信息here)。
通过普通袜子

您的主应用程序将打开一个套接字,并接受来自其他希望与其通信的应用程序的连接。如果您想要做的就是能够关闭主应用程序,则操作很简单

new Thread() {
    public void run() {
        new ServerSocket(123456).accept();
        System.exit(0);
    }
}.start();


可能做。
通过RMI

使用RMI注册表,可以让您的卸载程序对主应用程序执行远程方法调用。


假设您将同时构建主应用程序和安装程序。并且由于它们将在相同的JVM版本以及本地主机上运行,​​因此我绝对会推荐RMI。

(其他特定于操作系统的答案可能包括命名管道或信号,但我不鼓励您朝这个方向发展。)

10-07 13:27
查看更多