0

我打算编写一个Android应用程序,使用原始套接字接口从本地代码读取原始数据包。我的手机已经扎根,因此我的本机代码可以使用runtime.exec(“su”)访问本机代码。但我不知道如何在本地代码和Java代码之间高效地传输数据包。 (在这种情况下,本机代码和Java代码在不同的进程中运行)由于我的应用程序必须尽可能高效地处理来自本机代码的原始数据包,因此我需要在它们之间建立一个“快速通道”。任何想法或建议?什么是在本机代码和Android代码之间传输数据/数据包的最有效方式

P.S.我厌倦了Android NDK,但在NDK中,本机代码和Java代码在同一个进程中运行,所以本机代码不能具有root特权来访问原始套接字。

回答

0

解决方案是:在本地层创建代理,以便它可以通过JNI与您的Java活动进行通信。然后通过使用IPC(活页夹)连接代理和本地服务。

一个问题:通过JNI传递复杂的数据结构并不方便。所以退后一步,你为什么要传递整个数据包?你能在本地层处理数据包并仅提交结果(例如整数)吗?

+0

在自定义Native组件之间使用Binder是可能的,但可能有点棘手。管道或unix套接字接口在概念上可能更简单;但如果真的在意支持优化共享内存的话。 –

相关问题