使用Android NDK(2.3及以上)开发网络库
场景
- 第三方应用程序(基于 TCP 套接字)与我们的本地库进行通信。
- 我们的库处理这些数据,然后使用 TCP 套接字通信与服务器进行通信。通信是双向的。
我们设计并实现了第三方应用程序和我们的 IPC 库之间的套接字通信机制。our-library 正在利用第三方应用程序端口(默认值:6700)来建立服务器之间的连接。
因此,它是一种环回连接,通过它我们的库和第三方应用程序之间发生通信。
int on = 1;
setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
bind(s, (struct sockaddr *) &sin, sizeof (sin));
问题领域
一切正常,但由于它,性能被降级。如果没有网络库,则通信非常快。为了验证问题出在环回 tcp 套接字上,我们删除了库的所有内部处理。该库仅充当应用程序的伪服务器(传递)。应用程序将数据发送到 localhost 和套接字,而库只是将其按原样转发到服务器。
> 查询
那么有什么方法可以提高性能吗?
1)Android上的UNIX域套接字怎么样,它们可以在应用程序和我们的库之间使用吗?
2)Binders 可以用来在用户级应用程序和原生 Android 库之间进行通信吗?
3) 或者我们是否有类似于 IOCTL SIO_LOOPBACK_FASTPATH 的东西(TCP 环回快速路径由应用于发送和接收套接字的套接字 IOCTL SIO_LOOPBACK_FASTPATH 启用。)传输控制协议 (TCP) 环回优化
提前谢谢了