为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
胡子哥哥 2023-06-01 17:11:18
我正在尝试制作这样的程序一共有三个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 来向其他进程发送远程命令的包。


查看完整回答
反对 回复 2023-06-01
  • 1 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信