Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Enviar archivos Por TCPIP

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Enviar archivos Por TCPIP Responder citando

Saludos necesito crear un programa que transfiera archivos atraves de TCP IP tipo el MSN Messenger puedo comunicar dos aplicaciones con socket pero no he encontrado la forma de enviar archivos les agradeceria me dieran una ayuda si hay algun componete que lo haga o algun ejemplo o idea muchas gracias.


Question
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Hola MAc,

bajate de aquí un ejemplo

http://adrian.org.ar/dat/iptrans%201_0_4.zip

Son dos componentes cliente - servidor, que implementan un protocolo que paquetizan el archivo y lo transmiten utilizando corrección de errores.

Funciona bien para archivos chicos, pruebalo para archivos más grandes, también tendrías que setear alguna opción de reenvío.

Si haces alguna mejora o corrección te pido que me la digas.

atte
_________________
Adrián

http://adrian.org.ar
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mensaje    Asunto: Responder citando

Muchas gracias ikis lo pruebo y te cuento, ya que los archivos a enviar son de aproximadamente 15 a 20 MB si le hago alguna cambio lo publico, muchas gracias. Smile
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Originalmente fue el trabajo practico de alguien para simular el protocolo TCP/IP y solo se pedía poderenviar

el tamaño de carga por paquete * el valor máximo del campo de tramas. (algo así como 1024 * 16 creo)

Ya que del lado que se recibe se valida el número de paquete. Tambien se posibilita enviar un error aleatorio en un paquete para re-solicitar el envío de una trama.

Como lo veo, analizandolo un poco puedes lograr resetear el campo nº de trama cuando alcanzas el valor máximo (creo q ya lo hice en la versión que te mandé) y así poder enviar cualquier tamaño de archivo.

Una cosa que si debes implementar es un timeout por si se desconecta algún extremo (cliente o servidor) Esto lo puedes hacer con un timer o alguna variable, aunque creo que tambien hay algo de esto.

En fin lo hice hace varios meses pero estoy seguro que funciona perfecto para archivos chicos.


atte
_________________
Adrián

http://adrian.org.ar
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mensaje    Asunto: Responder citando

Saludos!
Ikis no me lo liess XDD

Por lo que he entendido lo que dice Ikis es una simulacion del envio de dos archivos utilizando el protocolo TCP... O sea.. control de errores.. reenvio de tramas.. timeouts,,, Pero.. eso es innecesario porque ya lo hace TCP/IP .. eso es una practica de la universidad tipica.. pero ineficiente.. y posiblemente con mas problemas que otra cosa.. ya que TCP ya lo lleva y estas haciendo doble trabajo.

Si quieres enviar archivos muy grandes.. te sugiero que lo hagas a pelo..
o sea.. Componentes TClientSocket y TServer Sockets.. he visto algun ejemplo por el foro.. el procedimiento seria Abres fichero.. vas cogiendo buffer a buffer y enviando... hasta que el archivo se acabe.. y en el otro lado recibiendo.
Estoy casi seguro de haber visto algun ejemplo en este foro.. busca bien.. o voy a ver si lo encuentro y te pasteo la dire.

Saludos!!
Volver arriba
Mensaje    Asunto: Responder citando

https://cppbuilder.es/viewtopic.php?t=5903&highlight=tclientsocket

Aqui puedes ver un magnifico codigo de _leo que descarga un archivo de un servidor web.
Con este esquema, hacer el receptor y el emisor del file ya es modificar algunas cosillas.
Ahora mismo no tengo tiempo para hacerte las funciones, si sigues con problemas en cuanto me quede libre te hago un ejemplo.

Bys!
Volver arriba
Mensaje    Asunto: Responder citando

Estimado tresuves

el codigo funciona perfectamente y tiene la ventaja de manejar un tamaño de paquete, es decir controlas lo que envías y facilmente puedes actualizar un contador con el total enviado.

Lo de TCP/IP claro que se usa, ya que los socket son TCP y así se tiene la seguridad de que cada porción llegue a destino.

Repito FUNCIONA y no tiene problemas, al menos para archivos pequeños y con alguna breve modificación tambien con archivos grandes.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mensaje    Asunto: Responder citando

Saludos, Muchas gracias a los dos por la ayuda realmente me ha sido util he estado probando el ejemplo que envio ikis y funciona a la hora de conectarse y enviar el archivo, pero al terminar de recibirlo en el cliente el archivo esta corrupto, osea pierde el formato de salida, he estado probando con archivos de tipo DWG, DXF, JPEG, ZIP y en todos los casos me da el mismo error no se si necesitara algo especial sobre todo para los archivos de tiopo DWG.
En estos momentos probare el ejemplo que envio tresuves para ver si tengo el mismo error les agradesco la ayuda y les comento cualquier resultado muchas gracias. Smile
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

MAC, por lo q probe funciona para archivos pequeños pero hay algun bug cuando quieres transmitir algo más grande, en el metodo de escritura del archivo. Tendrias q verlo.

De solucionarlo ya lo tienes hecho, pero si encuentras otra alternativa no hay problema.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mensaje    Asunto: Responder citando

Saludoss Ikiss y Mac

No dudaba que funcionara el codigo Ikis, pero pense que lo que quiere mac es mandar archivos por socket y no mandar archivos mediante la simulacion del TCP, que como bien dices ya lleva incorporado toda la correccion de errores etc y no hace falta reprogramarla.

Un saludo!
Ikis, no te lo tomes a mal, solo queria dar otra altermativa, la tuya seguro que funciona pero era por no entrar en el protocolo. quizas no se me entendio bien. sorry.

Un saludo!
Volver arriba
Mensaje    Asunto: Responder citando

Está todo bien, aunque reitero que existen algunas ventajas de enviar de ese modo (ya que tienes más control).

Luego, cada paquete que envías, al ser un socket TCP se controla con todas las reglas que conocemos.



atte
_________________
Adrián

http://adrian.org.ar
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.