2016-03-23 16 views
1

私はCプログラムから自分のアンドロイドアプリケーションでDatagramPacketを受信して​​います。 NDKを使ってデータを解析する必要があります。受信したパケットをネイティブメソッドに渡して解析したいと思います。誰かが受信したパケットをC関数に渡す方法を教えてもらえますか?Android NDK受信したDatagramPacketをC関数の引数として渡す方法は?

DatagramPacket packet = new DatagramPacket(buf, buf.length); 
socket.receive(packet); 
System.out.println(packet.getLength()); 

ここで、受信したパケットを解析してC関数に渡す必要があります。

+0

受信したデータグラムパケットは、受信したCプログラムに渡しますか?どうか明らかにしてください。 – EJP

+0

受け取ったデータグラムパケットをAndroidのネイティブメソッドに渡したいとします。私が受け取ったCプログラムには戻っていません。 – somia

答えて

0

buf(それはbyte[]と仮定します)とpacket.getLength()の値をJNI関数に渡します。その中で、バイト配列関数を使用します。 g。 JNIEnv::GetByteArrayRegion()実際のバイト数を取得します。

+0

C関数はすでにパケットを受信するように定義されています。私はbyte []として構造体_PktHdrTypeDefを受け取り、C関数はvoidです。Parse_header(_PktHdrTypeDef * pPktHdr) – somia

+0

あなたは任意のC関数がJavaから呼び出せないことを知っています。これには、 'Java_com_mypackage_MyClass_MyMethod()'の形式でJNI準拠のラッパーが必要です。 –

+0

その場合、パケットをMyMethod(buf)として渡してJava_com_mypackage_MyClass_MyMethod(JNIEnv * env、_PktHdrTypeDef * pPktHdr)として受け取ることはできますか? – somia

関連する問題