簡體   English   中英

Java IPC:GUI 和命令行

[英]Java IPC: GUI and Command Line

我想為 Java 應用程序實現一個命令行界面。 這不會太難做,除非我希望命令行程序影響另一個 Java GUI 程序的狀態。 例如,我可以輸入:

java CliMain arg1 arg2

另一個正在運行的 GUI 實例將執行適當的操作。

實現這樣的事情的最簡單方法是什么?

您可以讓 GUI 應用程序偵聽 TCP 端口(在localhost接口上),並且 CLI 應用程序將連接到它。

一種方法是使用 REST over HTTP。

另一種方法是通過 JMX。 它為您提供了很多“免費”的東西(在簡單的情況下,您只需實現一個 bean 並注冊它——非常簡單),並且特別適合這項任務。

您可以讓 GUI 應用程序(如編輯器)監聽

1) 某種類型的剪貼板事件
如果事件是您感興趣的類型,則獲取剪貼板內容。

2) 某個端口上的服務器套接字
偵聽服務器套接字。 當 CLI 程序啟動時,它連接到已知端口的服務器套接字,發送信息並退出。

3) 排隊
您可以從 CLI 程序入隊,也可以從 GUI 程序出隊。

如果您想進一步調查,許多專業編輯器如 emacs 使用相同的機制。 http://www.emacswiki.org/emacs/EmacsClient

您的應用程序可以通過RMI進行控制。 該應用程序將實現一個控制接口,在本地主機上注冊其服務,命令行應用程序將獲得一個 rmi 代理並調用所需的控制方法......

一開始似乎很難,但是當您嘗試過之后,您很快就會發現那是多么容易。 並且它還支持通過SSL 進行加密。 因此,如果在線存在安全相關數據,您就可以保護您的數據交換。

最簡單的方法是讓 GUI 偵聽 TCP 端口上的命令。 命令行會發送命令,GUI 會解釋它們。

也許你也可以用命名管道來做到這一點,但我不確定你會如何在 Java 中實現它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM