请教JNI返回数据的问题
我想设计一个recv函数
JNIEXPORT jint JNICALL Java_com_cn_connect_SocketUnit_recv(
JNIEnv * env, jclass cls, jint sock, jbyteArray buf, jint len)
我想的是JAVA成传一个byte[]数组 和长度过来。 我把接收的数据写到这个buf里面。
我现在只知道可以
char* data = (char*)((*env)->GetByteArrayElements(env, buf, 0));
从jbyteArray转成char*取得数据。
然后使用ReleaseByteArrayElements释放。我现在的代码大概是这样的。
if (sock == -1) {
return -1;
}
char* data = (char*)((*env)->GetByteArrayElements(env, buf, 0));
if (data == 0) {
return -1;
}
int ret = recv(sock, data, len, 0);
if (ret == 0) {
break; //socket probably closed
} else if (ret < 0) {
break; //handle errors appropriately
}
(*env)->ReleaseByteArrayElements(env, buf, data, 0);