[問題] 該如何讓java和exe相互溝通?

看板java作者 (台灣高階管理人)時間7年前 (2017/06/21 18:15), 編輯推噓6(6036)
留言42則, 5人參與, 最新討論串1/1
請教各位前輩, 小弟想要讓Java和Windows Exe相互交換資料, 現在情境: 小弟有二支Java程式A.java及B.java(均為專案), 均是用Java寫成, 但是使用Jsmooth工具包成Exe, 所以現在是二個Exe執行檔A.exe及B.exe, 問題為A.exe執行後有資訊要丟至B.exe, 小弟在A.java裡寫了它會回傳一個HashMap<String, Object>(假設為data), 該如何在B.java裡取用到它(data)呢? (另外先提一聲,此二專案不能互相引用, 所以也不知道該稱為"java exe 溝通"還是"exe exe 溝通"? 另外也不考慮用資料庫、檔案或此類方法,謝謝!) 不知道各位能否指點一下呢? 小弟用關鍵字於google上均查不到相關資料, 不知道是否有什麼方法或是套件可以用呢? 謝謝大家! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.133.40.236 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1498040137.A.C56.html

06/21 18:23, , 1F
關鍵字 IPC
06/21 18:23, 1F

06/21 18:27, , 2F
最單純的方法就是開個socket..
06/21 18:27, 2F

06/21 18:35, , 3F
回ssccg大,請問是軟體或是套件嗎?
06/21 18:35, 3F

06/21 18:37, , 4F
在網上搜尋,結果…IPC入侵實例!
06/21 18:37, 4F

06/21 18:37, , 5F
= ="
06/21 18:37, 5F

06/21 18:48, , 6F
另外深入點查詢,好像是正解!但是 …
06/21 18:48, 6F

06/21 18:48, , 7F
不知道把java用Smooth包成exe,那這個方法行的通嗎?
06/21 18:48, 7F

06/21 21:20, , 8F
不管你包成什麼東西,你還是寫java程式碼吧?
06/21 21:20, 8F

06/21 23:31, , 9F
ssccg大大,是的
06/21 23:31, 9F

06/22 00:40, , 10F
我查了一下,發現ipc方法還可以在不同程式間溝通
06/22 00:40, 10F

06/22 00:41, , 11F
真是強大啊,只是想問一聲,和Socket解法優缺點是…?
06/22 00:41, 11F

06/22 09:16, , 12F
socket是IPC的一種方法... 只要在同電腦程式間溝通就叫IPC
06/22 09:16, 12F

06/22 09:56, , 13F
謝謝ssccg大,了解!
06/22 09:56, 13F

06/22 11:43, , 14F
但…有沒有辦法直接用Object來溝通呢?
06/22 11:43, 14F

06/22 11:44, , 15F
但…有沒有辦法直接用Object來溝通呢?
06/22 11:44, 15F

06/22 11:44, , 16F
貼錯,程式語法上,要怎麼寫呢?
06/22 11:44, 16F

06/22 14:36, , 17F
兩個人還是得靠說話、書寫、動作等才能互相溝通
06/22 14:36, 17F

06/22 14:36, , 18F
你沒辦法知道對方腦子在想什麼 兩隻.EXE也是同樣道理
06/22 14:36, 18F

06/22 14:36, , 19F
socket就是其中一種溝通方法
06/22 14:36, 19F

06/22 14:39, , 20F
socket的寫法、傳遞,你自己GOOGLE吧 有一大堆
06/22 14:39, 20F

06/22 15:36, , 21F
目前想用RandomAccessFile+MappedByteBuffer來做,
06/22 15:36, 21F

06/22 15:38, , 22F
目前卡在HashMap<String, Object>無法getBytes …
06/22 15:38, 22F

06/22 15:38, , 23F
啊 … 想不出來啊 … 救人啊 …
06/22 15:38, 23F

06/22 15:43, , 24F
網路上全部都是用"字串" …
06/22 15:43, 24F

06/22 15:44, , 25F
可是小弟的資料不是只有數字,字串這麼簡單的啊 ~~~
06/22 15:44, 25F

06/22 15:44, , 26F
可以用Object來溝通嗎? 怎麼沒看到例子啊? = =
06/22 15:44, 26F

06/22 16:06, , 27F
不可以,物件是JVM管理的記憶體內的表示方式,離開就沒了
06/22 16:06, 27F

06/22 16:07, , 28F
要傳出去要序列化(把Object轉成某種binary表示法),當然有
06/22 16:07, 28F

06/22 16:09, , 29F
很多library把這段包裝起來,可以把IPC用起來像呼叫方法
06/22 16:09, 29F

06/22 16:25, , 30F
ssccg大,可以說一下是那些套件嗎?
06/22 16:25, 30F

06/22 16:27, , 31F
或是有什麼關鍵字提示呢?
06/22 16:27, 31F

06/22 19:38, , 32F
多 google 吧... ss 講的都關鍵字
06/22 19:38, 32F

06/22 19:40, , 33F
推文看的懂的話 應該沒什麼問題才是0.0
06/22 19:40, 33F

06/22 19:43, , 34F
最簡單就 Data 實做 Serializable,並用 ObjectOutput
06/22 19:43, 34F

06/22 19:43, , 35F
Stream
06/22 19:43, 35F

06/22 21:23, , 36F
json
06/22 21:23, 36F

06/22 21:24, , 37F
差點打成jason..
06/22 21:24, 37F

06/23 00:04, , 38F
用方法呼叫的通常叫RPC,是說不管IPC還RPC應該都很好找到一
06/23 00:04, 38F

06/23 00:08, , 39F
堆吧...沒什麼更關鍵的關鍵字了,再來就直接套件名字了
06/23 00:08, 39F

06/23 09:20, , 40F
謝謝各位的教導,謝謝!
06/23 09:20, 40F

06/23 17:39, , 41F
哈囉 g 大,jason 來惹 xd
06/23 17:39, 41F

06/25 19:06, , 42F
protocol buffer?
06/25 19:06, 42F
文章代碼(AID): #1PIaT9nM (java)
文章代碼(AID): #1PIaT9nM (java)