gpt4 book ai didi

Android - 将 C++ 套接字服务器移植到 Android?

转载 作者:行者123 更新时间:2023-11-30 03:22:21 26 4
gpt4 key购买 nike

我是 Android 开发的新手,但我是 linux c/c++ 背景的人。

现在,我有linux c++ 网络代理程序,它是用boost 库编写的TCP Server 和Client。这个代理程序的作用是

  1. TCP 服务器将接收 Android 应用程序的请求,并翻译该请求请求某种特定格式
  2. 然后充当客户端,将翻译后的内容发送到正确的远程计算机(如路由器)

我的任务是将这个程序移植到安卓系统上。并且希望Android原生应用像Linux一样通过socket与这个代理程序通信。

我在网上搜索,试图找到正确的方法来做到这一点。但是,我发现的大多数现有内容似乎都是基于 Java JNI 库的解决方案。

我想知道这是否可以通过守护进程或服务进程的方式来完成。代理程序有点大,所以,重写对我来说是一个真正的痛苦。

如有任何建议或解决方案,我们将不胜感激。提前致谢!

杰夫

最佳答案

除非我们谈论的是获得 root 权限的设备,否则在堆栈中的某个级别必须处理 Android 上的 Java 是没有办法的。

您可以将代码包装在原生 Activity 中,这基本上意味着现有的 Android Java 类知道如何从 .so 文件加载一组预定义的公共(public)符号。

https://developer.android.com/reference/android/app/NativeActivity

https://developer.android.com/ndk/guides/stable_apis#native-application-apis

这里的问题是何时启动上述 Activity ,因为不能保证它会一直运行。

Android 没有 UNIX 意义上的守护进程,只有服务。

因此,作为替代方案,您可以创建一个 Android 服务类,但是从版本 8 开始,存在执行限制。这意味着您不能让它永远在后台运行。

https://developer.android.com/guide/components/services

可能通过使用绑定(bind)服务,应用程序在通过套接字进行对话之前需要连接到该服务可能会满足您的需要。

https://developer.android.com/guide/components/bound-services

关于Android - 将 C++ 套接字服务器移植到 Android?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51214401/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com