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

时间:2018-07-06 16:26:07

标签: android c++ sockets android-ndk

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

现在,我有linux c ++网络代理程序,它是用Boost库编写的TCP Server和Client。该代理程序的功能是

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

我的任务是将该程序移植到Android系统上。并希望Android本机应用程序可以像Linux中那样通过套接字与该代理程序进行通信。

我在网上搜索,尝试找到正确的方法。但是,似乎我发现的大多数现有东西都是基于Java JNI库的解决方案。

我想知道这是否可以用守护程序或服务处理方式完成。代理程序有点大,所以重新编写对我来说真的很痛苦。

任何建议或解决方案将不胜感激。谢谢前进!

杰夫

1 个答案:

答案 0 :(得分:1)

除非我们谈论的是植根设备,否则就无法在堆栈的某个级别上在Android上处理Java。

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

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

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

这里的问题是何时启动所述活动,因为不能保证使其继续运行。

在UNIX上,Android没有守护程序,只有服务。

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

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

可能通过使用绑定服务,应用程序在通过套接字进行交谈之前需要连接到该服务,这可能会满足您的要求。

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