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

时间:2019-01-18 13:07:26

标签: go

Program which I am trying to make like this

有三个GO Porgram,分别是Go程序1,Go程序2,Go程序3

执行程序1 从串口获取数据并发送到Go Program 2

GO计划2 修订版Go程序1中的数据并将其发送到MQTT

GO计划3 应该是Web框架,因为我需要Web UI来控制和管理这些GO程序1和Go程序2

Go Program 3任务是:

  • 要开始停止GO程序1和2

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

  • 更改Go程序2的代理地址,用户名和密码

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

1 个答案:

答案 0 :(得分:0)

看看评论中的讨论,我认为您假设Go具有IPC的一些特殊方式,而Python没有。那不是真的。通道对于在单个过程中进行通信是有用的。如果您希望这些程序真正是独立的(进程),则需要所有常用的IPC-您可以使用管道,套接字,共享内存或其他功能。

我个人建议使用套接字,因为Go确实非常适合网络编程以及编写套接字服务器和客户端。而且,一旦您的应用程序使用套接字,就可以更轻松地将这些不同的进程移植到Internet上的多台计算机上运行。此外,您还可以利用更高级别的协议级别并使用RPC等功能。


要创建套接字服务器,请使用select st_asgeojson( st_boundingdiagonal( st_collect( the_geom))) from populated_places ,然后在返回的对象上循环调用net.ListenAccept返回的每个连接都是可以与之通信的远程客户端-如果您希望多个客户端之间并发访问,我建议在此处使用goroutine。

但是,对于像您这样的项目的初次尝试,我会选择Accept软件包,该软件包非常易于使用,并且提供了更高级别的API来将远程命令发送给其他进程。