read - socket getoutputstream in java
DatagramPacket: ¿getData siempre devolverá el mismo búfer que se pasa? (1)
byte [] r = new byte[4096];
DatagramPacket dpr = new DatagramPacket(r, r.length);
sock.receive(r);
Después de la receive
, ¿ dpr.getData()
& r
siempre será el mismo?
Ejemplo: ¿Puedo usar directamente la matriz de bytes r
o debo llamar a getData()
para recuperar el búfer de nuevo?
Probándolo, demostró que era lo mismo, pero ¿está esto siempre garantizado?
byte [] r = new byte[4096];
DatagramPacket dpr = new DatagramPacket(r, r.length);
sock.receive(r);
Eso debería ser sock.receive(dpr);
Después de la recepción, ¿dpr.getData () & r siempre será el mismo?
Sí. r
fue suministrado al constructor como ''el búfer para mantener el datagrama entrante'', y getData()
''devuelve el búfer usado para recibir o enviar datos''.
es decir, ¿puedo usar directamente la matriz de bytes r o debo llamar a getData () para recuperar el búfer de nuevo?
Puedes usar la matriz de bytes, pero ¿por qué? Use getData()
como todos los demás, sin olvidar también usar getOffset()
y getLength()
, en lugar de asumir que el datagrama llenó la matriz de bytes: por ejemplo, System.out.println(new String(datagram.getData(), datagram.getOffset(), datagram.getLength()));