【问题标题】:Should I choose Boost Asio or Aysnc Socket threads in Android?我应该在 Android 中选择 Boost Asio 还是 Async Socket 线程?
【发布时间】:2012-12-13 13:43:00
【问题描述】:

我正在为 Android 开发一个基于网络的 UI 应用程序,该应用程序将执行以下类型的功能

  1. 需要与在基于 n/w 的嵌入式设备上运行的 TCP 服务器通信(一次 >100 个)。
  2. 定期轮询这些设备以获取更新信息
  3. 从这些设备发送和接收信息
  4. 以上所有信息都将由应用程序的 UI 控制和管理

考虑到上述情况,应用程序可能必须为多个连接生成多个线程并管理它们。所以我的查询是

  1. 使用 Boost.Asio 库开发网络模块是一种好方法吗?或者最多可以打开100个socket线程进行连接?

  2. 如果使用Boost.Asio,那么网络模块会使用NDK单独开发,访问JNI会到位,进而导致响应缓慢?

或者,还有其他更好的选择吗?期待您的意见!

非常感谢。

【问题讨论】:

    标签: sockets android-asynctask boost-asio android-networking


    【解决方案1】:

    我建议查看New I/O,它在 Android 上受支持。使用它可以在一个线程中处理多个连接,API 原理类似于 Posix select() 调用。

    如果您决定选择第二个选项(用 C/C++ 实现的网络代码),我认为您不必担心 JNI 性能。无论如何,Android API 的重要部分只是 C/C++ 之上的一个薄 JNI 包装器。

    【讨论】:

    • 非常感谢New I/O的建议,分析boost asio的原因之一是因为以后代码也可以用于其他平台,尤其是iOS。
    • 如果是这样,那么 JNI 可能是要走的路。它真的没有那么重,开销通常可以忽略不计。此外,这取决于您跨越 Java/C 边界的频率,如果您需要高性能,最好将更多功能放入 C/C++ 中。但是,我们需要更多地了解这个特定项目。
    • 非常感谢您的建议!
    猜你喜欢
    • 2011-11-13
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2017-04-27
    • 1970-01-01
    • 2016-01-07
    相关资源
    最近更新 更多