2014-04-01 3 views
0

Я отобразил массив байтовых массивов из native.java socket.read для b [] игнорировать область, отображаемую из JNI

jbyteArray ar = env->NewByteArray(len); 
env->SetByteArrayRegion(ar, 0, len, (jbyte*) buf); 
... 

затем вызвать Java сокет получить

public int socketReceive (Socket sock, byte[] ar) 
{ 
    int nrecv = 0; 
    try 
    { 
     nrecv = sock.getInputStream().read(ar); 

    } catch (Exception e) 
    { 
    } 

    return nrecv; 
} 

результат ничего не написал

(jbyte*) buf 

и

byte[] ar 

фактически содержат полученные данные, но в новом байтовой области

ответ

0

Это именно то, чего вы должны ожидать. SetByteArrayRegion() копии данные от 'buf' до 'ar []'. Он не настраивает «ar []», чтобы указать на «buf». См. Спецификацию JNI.

Смежные вопросы