Ich weiss nun, was das Problem ist. Die Zeile
System.arraycopy(data, i*4096, tmp, 0, (data.length-i*4096)%4096);
stimmt nur fuer das letzte Paket.
if (i == num_packets -1)
System.arraycopy(data, i*4096, tmp, 0, (data.length-i*4096)%4096);
else
System.arraycopy(data...