我应该在Android中选择Boost Asio或Async Socket线程吗?

时间:2012-12-13 13:43:00

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

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

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

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

    1. 使用Boost.Asio库开发网络模块是否很好?或者可以打开多达100个套接字线程进行连接?

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

    3. 或者,还有其他更好的选择吗?期待您的投入!

      非常感谢提前。

1 个答案:

答案 0 :(得分:2)

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

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