supongo que la pregunta es por escrito incorrectamente. Encontré esto al buscar una respuesta de por qué mi uso de InputStream y OutputStream parecía estar configurando toda la matriz a 0 al encontrar un byte de valor 0. Suponiendo que los bytes contengan ASCII válido y no binario. Dado que la pregunta no surge y pregunta esto, y nadie más parece haberlo considerado posible, creo que tendré que satisfacer mi búsqueda en otro lado.
Lo que intentaba hacer era escribir una clase TransparentSocket que pudiera instanciar un TCP (Socket/ServerSocket) o un UDP (DatagramSocket) para usar el DatagramPacket de forma transparente. Funciona para UDP, pero no (todavía) para TCP.
Seguimiento: parece que he verificado que estas transmisiones son en sí mismas inútiles para las transferencias binarias, pero que se pueden pasar a una creación de instancias más amigable con los programadores, p.,
new DataOutputStream (socket.getOutputStream()). WriteInt (5);
^Mucho de esa idea. Escribe datos de forma "portátil", es decir, probablemente ASCII, lo que no ayuda en nada, ¡especialmente cuando emulo un software sobre el que no tengo control!
¿cómo puedo reproducir esto? como cuando se espera una corriente de entrada –
@ChristopherFrancisco Loop? Simplemente llame a los métodos desde un bucle. Si quiere decir esperar un mensaje sin detener su programa, puede simplemente hacer la E/S en un hilo separado o modificar esto para usar NIO. –
No lo he probado, pero si len> [TCP packet size], creo que readFully() podría no leer todos los contenidos, pero solo las primeras partes disponibles .... (https://docs.oracle.com/javase/ 7/docs/api/java/io/DataInput.html # readFully (byte [])) Por lo que este código podría no funcionar como en este caso, ¿verdad? – ntg