我正在嘗試制作這樣的程序一共有三個GO Porgram,分別是Go program 1, Go Program 2 , Go Program 3Go Program 1 從串口獲取數據并發送給 Go Program 2GO 計劃 2 Recv。來自 Go 程序 1 的數據并將其發送到 MQTTGO Program 3 它應該是 web 框架,因為我需要 Web UI 來控制和管理這些 GO program 1 & Go Program 2Go Program 3 的任務是:開始停止 GO 程序 1 和 2更改或設置 Go Program 1 的 COM 端口并發布主題更改Go Program 2的經紀人地址,用戶名和密碼如何在所有三個 GO 程序之間進行通信或管道。
1 回答

慕妹3146593
TA貢獻1820條經驗 獲得超9個贊
我認為您假設 Go 有一些 Python 沒有的特殊 IPC 方式;這不完全正確。通道對于單個進程內的通信很有用。如果您希望這些程序真正獨立(進程),您將需要所有常用的 IPC - 您可以使用管道、套接字、共享內存或其他任何東西。
我個人建議使用套接字,因為 Go 非常適合網絡編程和編寫套接字服務器和客戶端。此外,一旦您的應用程序使用套接字,就可以更輕松地將這些不同的進程移植到多臺機器上、跨 Internet 等運行。此外,您還可以利用更高級別的協議級別并使用諸如 RPC 之類的東西。
要創建套接字服務器,請使用net.Listen
, 并Accept
在返回的對象上循環調用。返回的每個連接Accept
都是一個您可以與之通信的遠程客戶端——如果您想要多個客戶端之間的并發,我建議您在這里使用 goroutine。
然而,對于像您這樣的項目的第一次削減,我會選擇net/rpc
使用起來非常簡單并提供更高級別的 API 來向其他進程發送遠程命令的包。
- 1 回答
- 0 關注
- 332 瀏覽
添加回答
舉報
0/150
提交
取消