rpcgen for Linux

Posted

技术标签:

【中文标题】rpcgen for Linux【英文标题】: 【发布时间】:2014-10-22 09:19:42 【问题描述】:

我们已经使用 rpcgen 在 Linux 机器(c 语言)上创建了一个 rpc 服务器。 当我们的程序有很多调用时,它仍然会导致一个 线程请求。 我看到这是 2004 年的常见问题,有一个新的 rpcgen(或其他生成器)解决了这个问题?

谢谢, 科比

【问题讨论】:

我相信你的问题是边界线或者可能是题外话,因为你没有显示任何代码。您还应该编辑您的问题,以详细说明您的服务器在做什么。 【参考方案1】:

rpcgen 将简单地生成serialization 例程。您的服务器可能被编码为具有多个线程。详细了解pthreads。

您可能不应该有太多线程(例如,最多十几个,而不是数千个)。您可以将您的程序设计为使用一些thread pool,或者只是让一组固定的工作线程不断处理 RPC 请求(主线程只负责接受连接等)。

阅读rpc(3)。你可能会考虑不在你的服务器中使用svc_run,而是用你自己的方式使用线程。请注意,如果您使用线程,则需要同步,可能与mutex 同步。

您也可以考虑JSONRPC,或者让您的C 程序成为一些专门的HTTP 服务器(例如使用libonion)并让您的客户端执行HTTP 请求(可能使用libcurl)。另见this。您可能会考虑使用message passing 架构,或许使用Open-MPI。

【讨论】:

关于 rpcgen:在 AIX 和 Solaris 上,我设法创建了一个多线程服务器,而无需对生成的代码进行任何更改。【参考方案2】:

注意sun版被弃用,找tirpc

【讨论】:

以上是关于rpcgen for Linux的主要内容,如果未能解决你的问题,请参考以下文章

rpcgen-在结构中传递字符串

Windows 7 中的 rpcgen - 未找到预处理器

使用 rpcgen 从远程服务器返回字符串

什么是协议编译器?为什么 rpcgen 被称为协议编译器?

使用rpcgen时,调用者如何找到被调用者?

在 RPCGen 中将字符指针从客户端传递到服务器