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 ソケットにあることを確認するために、ライブラリのすべての内部処理を削除しました。アプリケーションの疑似サーバー (パススルー) として機能するライブラリ。アプリはローカルホストとソケットにデータを送信し、ライブラリはそのままサーバーに転送するだけです。
> クエリ
では、パフォーマンスを向上させる方法はありますか?
1) Android の UNIX ドメイン ソケットはどうですか? アプリとライブラリの間で使用できますか?
2) ユーザー レベル アプリケーションとネイティブ Android ライブラリ間の通信にバインダーを使用できますか?
3) または、IOCTL SIO_LOOPBACK_FASTPATH に似たものがありますか (TCP ループバック高速パスは、送信ソケットと受信ソケットに適用されるソケット IOCTL SIO_LOOPBACK_FASTPATH によって有効になります。)伝送制御プロトコル (TCP) ループバックの最適化
よろしくお願いします