我想从本机部分的套接字接收数据,然后读取 Java 代码中的数据。我知道直接 ByteBuffer 可能是一个不错的选择。所以我在Java中准备了一个ByteBuffer,比如
ByteBuffer myBuffer = ByteBuffer.allocateDirect(128);
我通过以下代码在本机中得到这个 ByteBuffer
JNIEXPORT jboolean JNICALL Java_nfore_android_bt_pro_nfhfp_rcvSco(JNIEnv *env, jobject this, jint fd, jobject buff){
int buff_size;
int socketfd;
jbyte *BUFF = (*env)->GetDirectBufferAddress(env, buff);
buff_size = (*env)->GetDirectBufferCapacity(env, buff);
socketfd = fd; .....}
现在,我的愚蠢问题是
(1) 仅从语句“socketfd = fd”中获取 int 类型变量 socketfd 是否正确???(fd 是 jint 类型,在 Linux 中它确实是一个套接字 fd) (2) 我如何在 C 中将数据写入这个 ByteBuffer ???
确实,...我的情况是我在另一个本机 C++ 函数中获得了 Linux 套接字 fd,但是,我无法在其中添加我想要的函数。我想用这个 fd 来读/写数据,但我知道在 Java 代码中这是不可能的。所以我决定将它传递给本机并使用直接 ByteBuffer 来存储临时数据。
有什么建议吗?
谢谢你。