2

单击按钮时,一条简单的消息将从一个进程发送到另一个进程,该消息将只是一个带有字符串参数的简单命令,总计大约 50 个字符(绝对小于 1k),例如

DisplaySomeInfo("param1", "param2")

并满足以下条件:

  • 必须简单(即没有成熟的消息传递系统)
  • 必须在 Windows 上运行,应该在 Unix上运行
  • 下图显示了我的实际需求,但它应该适用于任何主要的编程语言/运行时
  • 性能并不重要,对于这样一个简单的消息,整个发送/接收周期不应超过一毫秒
  • “保证交货”等不是必需的
  • 发件人不关心接收者是否收到消息- 或者首先是否有接收者
  • 无需加密/认证/授权

在维基百科中,有一长串IPC 的方法,但最简单的方法似乎是非连接套接字选项。

有没有比简单地发送/接收UDP数据包(每个数据包一条消息,TTL = 0)更好的方法(更容易实现/维护/调试,更多的未来证明......)来实现它,比如说加上JSON(de ) 序列化器?

在此处输入图像描述

4

1 回答 1

0

对于这些要求,简单地将 UDP 单播数据包发送到 localhost 上的某个端口似乎是理想的。唯一的问题是必须选择和固定端口号。但是,如果这不是问题,那么简单地发送和接收 UDP 数据包就非常简单,不需要第三方库。

从 .Net 应用程序发送 UDP 数据包的简单示例:

public static void SendUdpPacket(int destinationPort, string payload)
{
    IPEndPoint endPoint =
      new IPEndPoint(IPAddress.Parse("127.0.0.1"), destinationPort);
    byte[] buffer = Encoding.UTF8.GetBytes(payload);
    Socket socket =
      new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
    socket.SendTo(buffer, endPoint);
    socket.Close();
}

唯一悬而未决的问题是如何编码多个参数。但是为此,有无数种方法,内置在许多语言中的是 HTTP URL 编码。

于 2016-02-10T07:26:07.643 回答