c - 简单的有线协议(protocol),一个人要做什么?

标签 c linux ipc zeromq

我有一个用 C 编写的简单服务器。它的主要目的是通过专有协议(protocol)与一些业务伙伴进行通信。出于这个原因和其他一些原因,它必须用 C 编写。但是,我还有许多其他进程,它们是用其他语言(例如 Python)编写的,它们必须与服务器(本地,在同一 Linux 服务器上)进行通信。

在这种情况下,跨语言 IPC 的最佳选择是什么?具体来说,我认为我掌握了传输技术:Unix 域套接字、命名管道、共享内存、ZeroMQ(Crossroads)。我对实现协议(protocol)的最佳方式更感兴趣,以保持 C 代码的小型和可维护性,同时仍允许与其他语言进行通信。

编辑:似乎有些困惑。我对讨论域套接字、共享内存等的优缺点感兴趣。人。我对 msgpack(感谢 unwind)以及用于实现有线协议(protocol)的其他技术/方法感兴趣。

最佳答案

当需求未知时,很难优化(=选择“最佳”)。您确实声明您的目标是保持 C 代码“小巧且可维护”,这似乎意味着您应该寻找一个库。也许 msgpack通过本地套接字?

此外,您的基本前提是服务器必须用 C 编写,因为您有一个专有协议(protocol),这似乎......至少很奇怪。

关于c - 简单的有线协议(protocol),一个人要做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12585987/

相关文章:

c - 如何查看unix/c中某个API正在哪个进程下被调用? (前提是这个特定的API被许多进程调用)

c - 为什么此代码可以在 Windows 7 上的 Visual Studio 上运行,但不能在 Linux 上正常运行

c++ - posix 管道作为消息队列 : What happens on blocked write + signal

c++ - 从 catch block 中获取回溯

c - 设置复杂的 mach 消息头

c - dbus 总是需要总线吗

c - IPC 系统 V - 消息队列创建

c - 你如何以可重入的方式 InitializeCriticalSection?

创建一个不是创建它的进程的子进程

arrays - Bash:嵌套for循环+中间循环包含两个数组?