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

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