dounieqi6959 2019-01-18 13:07
浏览 367
已采纳

如何在两个Go程序之间进行通信? [关闭]

Program which I am trying to make like this

There are three GO Porgram, they are Go program 1, Go Program 2 , Go Program 3

Go Program 1 Which get data from serial port and sent to Go Program 2

GO Program 2 Recv. the data from Go program 1 and sent it to MQTT

GO Program 3 It should be web framework as I need Web UI to control and manage these GO program 1 & Go Program 2

The Go Program 3 task are:

  • To start stop the GO Program 1 & 2

  • To change or set the COM port of Go Program 1 and publish topics

  • To change the broker address ,username & Password of Go Program 2

How to make communicate or Pipes between all the the three GO Programs.

  • 写回答

1条回答 默认 最新

  • dongnong7524 2019-01-18 14:11
    关注

    Looking at the discussion in comments I think you make an assumption that Go has some special way for IPC that Python doesn't; that's not exactly true. Channels are useful for communication within a single process. If you want these programs to be truly separate (processes) you'll need all the usual IPC - you can use pipes, or sockets, or shared memory, or what have you.

    Personally I'd recommend using sockets, because Go is really well suited for network programming and writing socket servers and clients. Also, once your application uses sockets it's much easier to port these different processes to run on multiple machines, across the internet, etc. In addition you can then leverage higher-level protocol levels and use things like RPCs.


    To create a socket server, use net.Listen, and call Accept in a loop on the returned object. Each connection returned by Accept is a remote client you can communicate with - I'd recommend a goroutine here if you want concurrency between multiple clients.

    For a first cut in a project like yours, however, I'd go for the net/rpc package which is very simple to use and gives a much higher level API to sending remote commands to other processes.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面