Thread View: es.comp.os.linux.programacion
5 messages
5 total messages
Started by Pablo
Mon, 03 Sep 2007 01:42
Transferencias de archivos
Author: Pablo
Date: Mon, 03 Sep 2007 01:42
Date: Mon, 03 Sep 2007 01:42
20 lines
1793 bytes
1793 bytes
Estoy diseñando un programa de chat para redes usando las librias QT y he pensado en incluir soporte para transferencia de archivos pero mis intentos hasta el momento son poco alentadores. - 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. - 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. ¿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? Gracias.
Re: Transferencias de archivos
Author: 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/
Re: Transferencias de archivos
Author: Fenix
Date: Tue, 04 Sep 2007 06:30
Date: Tue, 04 Sep 2007 06:30
9 lines
1387 bytes
1387 bytes
Pablo escribi� en news:VDJCi.6445515$D7.12079038@telenews.teleline.es:
> Estoy dise�ando un programa de chat para redes usando las librias QT y
> he pensado en incluir soporte para transferencia de archivos pero mis
> intentos hasta el momento son poco alentadores.
Podr�as mirar como lo hacen otros directamente... es lo bueno del
c�digo fuente libre. :)
Re: Transferencias de archivos
Author: Pablo
Date: Thu, 06 Sep 2007 22:45
Date: Thu, 06 Sep 2007 22:45
97 lines
5263 bytes
5263 bytes
Oscar Garcia escribió: > 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. > Sí... creo que además complicaría mucho las cosas. > ¿Qué protocolo has usado? No has hablado nada acerca de él. > En principio para la transferencia de archivos pretendía usar TCP que es lo más habitual... Aunque ya habia pensado lo de la transferencia por difusión. Puede ser muy util pero quizá en futuras versiones si tiene éxito... (entonces necesitaría UDP claro) > 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). > El programa está destinado a trabajar en un mismo segmento de red. La localización de ip's se realizaría mediante broadcast... Así que si eso funciona, probablemente, las conexiones también lo harán. Aunque la verdad es que por internet lo de los routers es un problema. > 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. > Si consigo establecer una no habrá problema con dos. :-) > ¿Qué protocolos has programado que emulen el nivel de sesión y presentación? > Todavía no he programado gran cosa. Pero almenos el nivel de sesión lo tengo casi decidido. Me falta por decidir algunos detalles sobre los "handshakes" de la encriptación y eso... Pero bueno eso será más o menos como SSL. En cuanto al protocolo de presentación: > Una transferencia de archivos puede comenzar con una descripción del > nombre de archivo y su longitud, seguido por su contenido. > Creo que lo más práctico es enviar la longitud, nombre y descripción del archivo en un paquete mezclado en la conexión de chat, a modo solicitud. Dejando la conexión de transferencia ya establecida, con claves de encriptación y todo ya resuelto antes. > 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. > Eso es lo que me preocupa... > 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. > Creo que eso es lo que buscaba. Como es un programa para redes locales, la velocidad es un punto muy importante. Así que probaré lo de la ventana... No importa que haya un poco de latencia al principio. > 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. Es una lástima que no se perfeccione ese sistema porque se lograría realizar streaming con anchos de banda pequeños... Aunque quizá sea un poco peligroso a gran escala. :-\ Fenix escribió: > Podrías mirar como lo hacen otros directamente... es lo bueno del > código fuente libre. :) > Ya había pensado en esa posibilidad... Pero los programas que se me ocurren que utilizan transferencia de archivos son demasiado complicados para mí... Es cuestion de tiempo, está claro, pero es una parte muy pequeña del programa para dedicarle tanto. Gracias por vuestra atención, a ver si el programa evoluciona y termina siendo una herramienta útil. Saludos.
Re: Transferencias de archivos
Author: Juan H
Date: Mon, 10 Sep 2007 05:06
Date: Mon, 10 Sep 2007 05:06
30 lines
2888 bytes
2888 bytes
On Sep 2, 9:42 pm, Pablo <palmail2004-n...@yahoo.es> wrote: > Estoy diseñando un programa de chat para redes usando las librias QT y > he pensado en incluir soporte para transferencia de archivos pero mis > intentos hasta el momento son poco alentadores. > > - 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. > - 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. > > ¿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? > > Gracias. Saludos amigo segun veo usted esta realizando un chat con librerias de qt, quisiera si es posible que me ayudara con un problema que tengo pues debo realizar un chat bajo qt en c++ y en realidad tengo un gran inconveniente pues el cliente debe informale al servidor q procesos tiene en ejecucion al momento q el usuario se conecta, osea tiene q mandarle el resultado de la ejecucion de un comando el "ps" el problema es que no se en que estructura enviarlo y no se como ejecutar el ps dentro de qt, si puede ayudarme o si tiene o sabe donde este un ejemplo que me pueda ayudar le agradecere que me lo haga llegar o me indique la direccion muchas gracias
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads