Netcat recibe solo una parte del archivo


1

Envío el archivo con cat file1 | nc ip-address porty lo recibo con nc -l port > file2y obtengo el archivo cortado. El tamaño del archivo recibido es de 28467200 bytes (aprox. 28M) de aprox. 150M.

uname -a
Linux MyName 3.13.0-107-generic #154-Ubuntu SMP Tue Dec 20 09:57:27 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

En otros linux que tengo (Loki en VirtualBox dentro de Windows7) esta limitación no está disponible.

uname -a
Linux Loki-VirtualBox 4.4.0-57-generic #78-Ubuntu SMP Fri Dec 9 23:50:32 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

También utilicé otro software como parte de envío con el mismo resultado, por lo tanto, culpo a la parte receptora.

En Wireshark veo la bandera (FIN, ACK) que cierra la conexión, pero no puedo encontrar ninguna razón para ello.

¿Cuál podría ser una razón para tal comportamiento?

EDITAR: en caso de que lo use nc -l port > filename, recibo 28 millones de datos, pero si lo uso nc -l port > filename < /dev/null, recibo 26K de datos (tomado de esta pregunta: envío de archivos a través de netcat ). ¿Está este comportamiento relacionado de alguna manera?


¿Cuánto falta? ¿Desde dónde - comenzar, terminar, uno o más bloques al azar?
AFH

Siempre recibo unos 28M. Los archivos de muestra son mucho más grandes, unos 150 millones. Recibo solo el comienzo del archivo.
avp

Parece un problema de red: debe redirigir stderren cada extremo y ver si hay algo en los registros de errores. Además, intente la transferencia con el remitente y el receptor en la máquina local, utilizando 127.0.0.1como IP del remitente. Por cierto, nunca use cat file | program ..., siempre use el mucho más eficiente program <file ....
AFH

Sí, ya he probado el localhost, no hay diferencia. Solo esa PC, solo esa nc (o sistema, lo que sea) tiene esta limitación. Para el stderr no se me ocurrió la idea. No veo nada en la terminal. En mi humilde opinión, la salida stderr aparecería allí, ¿no? Quiero decir, la tubería redirige solo el stdout, el stderr sería visible. ¿Me equivoco?
avp

No estaba seguro de cómo estaba accediendo o monitoreando el sistema remoto, por lo que no estaba seguro de si vería stderrmensajes. Cuando dice que usar localhostno hace ninguna diferencia, ¿quiere decir que se produce el mismo error? En ambos sistemas? ¿Has intentado enviar un archivo de tamaño similar de la otra manera?
AFH

Respuestas:


2

Estás recibiendo el archivo incorrectamente.

Deberías escucharlo con

nc -l -p port > file2

Y envíalo con

cat file1 | nc ip port

Ah, mierda, es un error tipográfico aquí. Recibí lo que has escrito. Sin embargo, soluciono la pregunta para no engañar a otros. Gracias de todos modos.
avp
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.