Article View: es.comp.os.linux.programacion
Article #484Re: Transferencias de archivos
From: Oscar Garcia
Date: Mon, 03 Sep 2007 13:22
Date: Mon, 03 Sep 2007 13:22
96 lines
5461 bytes
5461 bytes
Pablo escribi�: > - El primer intento fue transferir el archivo integramente atrav�s del > socket. Funcionaba bien en pruebas dentro del mismo ordenador pero > sobrecarga cualquier conexion de red. No debes mezclar la transferencia del archivo en el socket del chat. Dependiendo del tama�o del archivo y de la velocidad de conexi�n eso te supondr� un retardo enorm�simo. > - El segundo intento fue transferirlo en bloques y esperar a cada bloque > un paquete de respuesta por parte del receptor, pero no se que tama�o de > bloque ponerle y dependiendo de esto en unas conexiones funciona y en > otras no. �Qu� protocolo has usado? No has hablado nada acerca de �l. Posiblemente est� fallando el protocolo de transferencia de archivos. Si quieres usar un protocolo similar al usado por FTP recuerda el problema de los routers y los proxies... las personas ocultas tras ese tipo de dispositivos no podr�n recibir conexiones externas (s�lo realizarlas). Enviar el archivo en la misma conexi�n que usas para conectar al chat te evitar� ese tipo de problemas, pero siempre que tengas un buen protocolo que separe una cosa de otra. �Qu� protocolos has programado que emulen el nivel de sesi�n y presentaci�n? Un ejemplo podr�a ser: * Formato de mensaje de datos: Longitud (4 bytes) Tipo (4 bytes) Datos (longitud definida por el dato anterior, no necesita finalizar la cadena con un car�cter nulo ni retornos del carro ni similares). Dentro del campo Tipo se define qu� tipo de informaci�n estamos recibiendo o enviando. Por ejemplo, un mensaje de comprobaci�n de presencia del cliente, un mensaje recibido por un usuario, etc.. cada uno debe tener un tipo de mensaje asignado. El env�o de archivos tambi�n deber�a tener un tipo asignado. El contenido de un mensaje de transferencia de archivos podr�a ser tal que: Usuario destino (identificador num�rico del usuario destino o bien su nick o cualquier otro campo que identifique un�vocamente al destinatario). Identificador de sesi�n (identificador num�rico que permita diferenciar varios env�os diferentes de archivos con el mismo origen y destino). N�mero de secuencia (por si deseamos que no se env�e el siguiente paquete de datos hasta que no fuera aceptado el anterior). Datos (cada trozo de mensaje se env�a en un mensaje de aplicaci�n). Una transferencia de archivos puede comenzar con una descripci�n del nombre de archivo y su longitud, seguido por su contenido. Ten en cuenta que una transferencia de archivos ralentizar� (aumentar� la latencia) de las conversaciones dependiendo del tama�o de bloque que definas para cada trocito de archivo. As�, por ejemplo, un tama�o de bloque de 16KB en una conexi�n de 128 kbps (16 KB/s) de subida nos provocar� una latencia de salida de un segundo cada vez que se env�e un paquete. En conexiones lentas como m�dem en las que la velocidad de subida suele ser de 2 KB/s la latencia ser� de 8 segundos. Para mejorar la transferencia de archivos sin mermar demasiado la latencia de salida puedes programarte una ventana de transferencia, de modo que se env�en los i siguientes paquetes cuando se reciban los mensajes de recepci�n. Durante el comienzo de la transferencia posiblemente la latencia sea notable, pero una vez se haya enviado completamente la ventana s�lo se enviar� poco a poco el tama�o peque�o del mensaje, mejorando la latencia una vez estabilizada la transferencia. > �Existe algun estandard de transferencia de achivos que establezca > tama�os de bloque o algo de �sto? (no me respondais ftp, he mirado el > rfc pero no aclara mucho) > �Alguien que haya trabajado sobre esto me puede orientar un poco? Hombre.. trabajar, trabajar.. he hecho muchos protocolos de transferencia de archivos, entre ellos uno que trabaja en difusi�n usando UDP para enviar un mismo archivo a multitud de destinos usando una �nica vez el ancho de banda de la red. En esos protocolos no he mezclado nunca la conexi�n de datos con otra cosa. Como mucho una estructura inicial que define el nombre del archivo y su longitud... pero nada m�s. > Gracias. De nada, un saludo. -- �scar Javier Garc�a Baudet LinaresDigital http://redstar.linaresdigital.com/
Technical Details
Message-ID:
<fbh1r3$bs3$1@cormoran.emeteo.local>Path:
arc1-ca.pugleaf.net!g2news2.google.com!news4.google.com!fu-berlin.de!news.eteo.mondragon.edu!eteo.mondragon.edu!antonio.escomposlinux.org!cernicalo.escomposlinux.org!escomposlinux.org!not-for-mailReferences:
<VDJCi.6445515$D7.12079038@telenews.teleline.es>Show Full Headers
Complete Article Headers
X-Google-Thread: f86c8,375ebb79da2d042c X-Google-Attributes: gidf86c8,public,usenet X-Google-Language: SPANISH,ASCII Path: arc1-ca.pugleaf.net!g2news2.google.com!news4.google.com!fu-berlin.de!news.eteo.mondragon.edu!eteo.mondragon.edu!antonio.escomposlinux.org!cernicalo.escomposlinux.org!escomposlinux.org!not-for-mail From: Oscar Garcia <redstarQUITARSPAM23@terra.es> Newsgroups: es.comp.os.linux.programacion Subject: Re: Transferencias de archivos Date: Mon, 03 Sep 2007 15:22:43 +0200 Organization: Ecolnet Lines: 96 Message-ID: <fbh1r3$bs3$1@cormoran.emeteo.local> References: <VDJCi.6445515$D7.12079038@telenews.teleline.es> NNTP-Posting-Host: 36.170.217.87.dynamic.jazztel.es Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Trace: cormoran.emeteo.local 1188825764 12163 87.217.170.36 (3 Sep 2007 13:22:44 GMT) X-Complaints-To: emeteo@escomposlinux.org NNTP-Posting-Date: Mon, 3 Sep 2007 13:22:44 +0000 (UTC) User-Agent: Thunderbird 1.5.0.13 (X11/20070824) In-Reply-To: <VDJCi.6445515$D7.12079038@telenews.teleline.es>