如何不从 C++ 连接到 gRPC C++ InProcessChannel?

问题描述

我是 trying gRPC 作为 JNI 替代方案,其想法是在 C++ 端使用 gRPC 服务,在 Java/Android 端连接客户端。为了获得最佳性能,我更愿意使用进程内渠道(接受您的建议)。

如何使用 InProcessChannel() 连接到 C++ gRPC 服务器?问题是我需要为 Java 的 name pass InProcessServerBuilder

在 C++ gRPC 测试(例如 here)中,我找不到它的设置,这让我觉得 InProcessChannel 只能在纯 C++ 中使用(服务器和客户端都在 C++ 中)。 C++服务和Java客户端还有可能吗?

附注。我能够为 Java-server + Java-client 做到这一点。

PPS。我发现了几个类似的 QnAs eg. here,但我想知道是否还有办法让它一起工作(可能与一些 3rd-party channel impl)。它可以在 Unix 域套接字上工作吗?

解决方法

C++ 和 Java 的“进程内”传输没有在多种语言处于同一进程中的情况下正确命名。进程内传输仅适用于每种语言; C++ 和 Java 进程内传输无法交互。

您应该使用普通的 HTTP/2 客户端/服务器。

虽然可能存在您想要的东西,例如“共享内存”传输,但它需要大量工作,并且维护负担相对较少。

,

我已接受 Eric 的 Anderson 回答正确。但是,了解我如何使用 Unix 域套接字 working 可能会很有用。

对于 Android 和 patch,我必须use it netty。请注意某些 Android 特定的权限 notes

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...