0

我打算編寫一個Android應用程序,使用原始套接字接口從本地代碼讀取原始數據包。我的手機已經紮根,因此我的本機代碼可以使用runtime.exec(「su」)訪問本機代碼。但我不知道如何在本地代碼和Java代碼之間高效地傳輸數據包。 (在這種情況下,本機代碼和Java代碼在不同的進程中運行)由於我的應用程序必須儘可能高效地處理來自本機代碼的原始數據包,因此我需要在它們之間建立一個「快速通道」。任何想法或建議?什麼是在本機代碼和Android代碼之間傳輸數據/數據包的最有效方式

P.S.我厭倦了Android NDK,但在NDK中,本機代碼和Java代碼在同一個進程中運行,所以本機代碼不能具有root特權來訪問原始套接字。

回答

0

解決方案是:在本地層創建代理,以便它可以通過JNI與您的Java活動進行通信。然後通過使用IPC(活頁夾)連接代理和本地服務。

一個問題:通過JNI傳遞複雜的數據結構並不方便。所以退後一步,你爲什麼要傳遞整個數據包?你能在本地層處理數據包並僅提交結果(例如整數)嗎?

+0

在自定義Native組件之間使用Binder是可能的,但可能有點棘手。管道或unix套接字接口在概念上可能更簡單;但如果真的在意支持優化共享內存的話。 –

相關問題