两个 Go 程序之间如何通信?

我正在尝试制作这样的程序

一共有三个GO Porgram,分别是Go program 1, Go Program 2 , Go Program 3

Go Program 1 从串口获取数据并发送给 Go Program 2

GO 计划 2 Recv。来自 Go 程序 1 的数据并将其发送到 MQTT

GO Program 3 它应该是 web 框架,因为我需要 Web UI 来控制和管理这些 GO program 1 & Go Program 2

Go Program 3 的任务是:

  • 开始停止 GO 程序 1 和 2

  • 更改或设置 Go Program 1 的 COM 端口并发布主题

  • 更改Go Program 2的经纪人地址,用户名和密码

如何在所有三个 GO 程序之间进行通信或管道。


胡子哥哥
浏览 255回答 1
1回答

慕妹3146593

我认为您假设 Go 有一些 Python 没有的特殊 IPC 方式;这不完全正确。通道对于单个进程内的通信很有用。如果您希望这些程序真正独立(进程),您将需要所有常用的 IPC - 您可以使用管道、套接字、共享内存或其他任何东西。我个人建议使用套接字,因为 Go 非常适合网络编程和编写套接字服务器和客户端。此外,一旦您的应用程序使用套接字,就可以更轻松地将这些不同的进程移植到多台机器上、跨 Internet 等运行。此外,您还可以利用更高级别的协议级别并使用诸如 RPC 之类的东西。要创建套接字服务器,请使用net.Listen, 并Accept在返回的对象上循环调用。返回的每个连接Accept都是一个您可以与之通信的远程客户端——如果您想要多个客户端之间的并发,我建议您在这里使用 goroutine。然而,对于像您这样的项目的第一次削减,我会选择net/rpc使用起来非常简单并提供更高级别的 API 来向其他进程发送远程命令的包。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go