sockets - 在 Android 中我应该选择 Boost Asio 还是 Async Socket 线程?

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

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

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

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

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

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

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

提前非常感谢。

最佳答案

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

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

关于sockets - 在 Android 中我应该选择 Boost Asio 还是 Async Socket 线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13861115/

相关文章:

javascript - 浏览器如何需要 .js 文件?

java - 从 Socket 流读取 XML

android - 我怎样才能访问图书馆的资源

c++ - 让 Boost 1.68 在 Ubuntu 18.04 上运行

Java 套接字问题 : Packets Are Merged At The Receiver Side

java - 从 onPostExecute 和 doInBackground 返回 boolean 值

Android - 在调用方法之前不断增加延迟,直到用户停止交互

c++ - boost::make_shared 失败但 std::make_shared 工作

c++ - 如何从字节流中提取数据包?

java - 通过套接字从浏览器到服务器的基本 http 身份验证