7

AndroidでSCTPプロトコルを使用するにはどうすればよいですか?AndroidでのSCTPプロトコルのサポート

私はすでに、AndroidシステムがデフォルトでSCTPをサポートしていないことを認識していますが、SCTPカーネルモジュールを挿入するか、モジュール設定でSCTPを有効にしてカーネルを再構築することで有効にすることができます。

この問題についていくつかの洞察が必要です。出来ますか?どのようにアンドロイドのプロトコルをサポートするようにするには?カーネルモジュールをビルドして正しく挿入するには?それをサポートするシステムを作ることができれば、そのプロトコルをどのように使うことができますか?アンドロイド上のJava APIはSCTPをサポートしていますか?

答えて

8

モジュールについては、正しい方法です。ご質問にお答えするには:

  • SCTPは、すでにLinuxのソースツリーのカーネルモジュールとして提供されている - 「CONFIG_IP_SCTP = M」そのモジュールを可能にします。そしてそれをハードリンクへの "y"に変更することはできますが、そのためにはカーネル全体を再構築する必要があるため、おそらく実行できません。

  • モジュールは、カーネルのバージョンごとに構築する必要があります。基本的にベンダーごとに、カーネルソース(doable)を入手してからモジュールをコンパイルする必要があります。

使用するには、ユーザモードで - S =ソケット(AF_INET [6]、SOCK_STREAM、IPPROTO_SCTP)を呼び出して、ソケットを作成します。その点から、いくつかの例外を除いてソケットAPIはまったく同じように動作します(すなわち、プロトコルタイプに特有のsetsockopt)。

Javaから - 実際のところ、最新のインカネーション(マイルストーン3の時点ではJDK7)をサポートしていますが、JavaがサポートしていてもDalvik(Androidの「Java VM」)は意味しません。 AndroidはSCTPサポートを「準備中」に持っていますが、Dalvikにはまだありません(少なくとも4.2ではなく)。ただし、SCTP呼び出しでネイティブライブラリをラップするパッケージのように、Javaクラスを作成することもできます。これはAndroidのためにNET権限のためにややこしいですが、(経験から)まだ管理可能です。

+0

便利な回答ありがとうございます。私はアンドロイドエミュレータ用のモジュールをビルドしようとしています。カーネルソースはcodenameの金魚で利用できます。私を案内したり、ハウツーを紹介したりできるので、特定のカーネル用のモジュールを作ることができます。また、モジュールを永続的にして、ブート中にモジュールを挿入する方法もあります。 – Meti

+1

モジュールを永続化するためのテスト中に/init.rcを変更することをお勧めします。ハウツーについては、Linuxカーネルの構築の一環です。対応するカーネルのソースツリーを取得し、sctpのディレクトリ(メモリが使用されている場合は./net/sctp)に移動します。そしてそれを作る。それは.koを生み出すでしょう。デバイス上にある場合は、NDKを使用してコンパイルしてARMとクロスコンパイルするようにしてください。 – Technologeeks

関連する問題