Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 如何在两个围棋程序之间进行通信?_Go - Fatal编程技术网

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

Go 如何在两个围棋程序之间进行通信?,go,Go,有三个围棋程序,它们是围棋程序1,围棋程序2,围棋程序3 围棋程序1 从串行端口获取数据并发送到Go程序2 围棋项目2 记录。从Go程序1获取数据并将其发送到MQTT 围棋项目3 它应该是web框架,因为我需要web UI来控制和管理这些GO程序1和GO程序2 Go Program 3任务包括: 启动和停止GO程序1和2 更改或设置Go程序1的COM端口并发布主题 更改Go程序2的代理地址、用户名和密码 如何在所有三个GO程序之间进行通信或管道。查看评论中的讨论,我认为您假设GO对IPC有一

有三个围棋程序,它们是围棋程序1,围棋程序2,围棋程序3

围棋程序1 从串行端口获取数据并发送到Go程序2

围棋项目2 记录。从Go程序1获取数据并将其发送到MQTT

围棋项目3 它应该是web框架,因为我需要web UI来控制和管理这些GO程序1和GO程序2

Go Program 3任务包括:

  • 启动和停止GO程序1和2

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

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


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

查看评论中的讨论,我认为您假设GO对IPC有一些Python没有的特殊方式;那不完全是真的。通道对于单个进程内的通信非常有用。如果你想让这些程序真正独立(进程),你需要所有常用的IPC——你可以使用管道、套接字、共享内存,或者你拥有的任何东西

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


要创建套接字服务器,请使用
net.Listen
,并在返回对象的循环中调用
Accept
Accept
返回的每个连接都是可以与之通信的远程客户端-如果您希望多个客户端之间的并发性,我建议在这里使用goroutine


然而,对于像您这样的项目的第一个切入点,我会选择使用非常简单的
net/rpc
包,它为向其他进程发送远程命令提供了更高级别的API。

当然,可以在两个go程序之间建立通信。有很多方法可以做到这一点。你试过什么?显示您的代码。您遇到了什么问题?请编辑问题,将其限制在一个特定的问题上,并提供足够的详细信息,以确定适当的答案。@Flimzy我已经在python中使用flask完成了这项工作,现在我正在尝试在Go@Arvindh:那很好,所以你知道基本原则。但你仍然没有回答一个基本的问题:你尝试了什么?包括您的代码。@Flimzy我不知道如何在GOLANG中开始这个概念,在Python中我使用管道进行进程通信,但在GOLANG中我不知道如何使用通道与另一个正在运行的go程序通信。