Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-03-2007
jeyco jeyco is offline
Registrado
 
Registrado: mar 2007
Posts: 8
Poder: 0
jeyco Va por buen camino
Unhappy enviar archivo audio

Hola, necesito enviar un archivo a otro ordenador a traves de udp y no se como hacerlo, alguien sabe?
Responder Con Cita
  #2  
Antiguo 26-03-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Solo por curiosidad ¿por que udp y no tcp? Si te decides a usar udp tendras que enviar el archivo dividido en pequeños trozos, y no tendras forma de saber si llegaron a su destino ni en que orden. Tendras que realizar tu las comprobaciones pertinentes tanto en el origen como en el destino, es decir, el mismo trbajao que ya hace tcp. No entiendo porque en este caso te decides por udp

De todas formas si te decides a realizarlo con udp, yo lo haria de la siguiente manera. Mandaria mensajes udp de un tamaño fijo, para eso utilizaria un record, algo como esto:
Código Delphi [-]
type
  TPaquete = record
    Numero: Integer;
    Longitud: Integer;
    // Mensajes de mas de 256, a mi, no me sulen dar buen resultado
    Datos: array[0..127] of Bytes;   
  end;

Ahora el programa que envia partiria el archivo en trozos no mas grandes de 128 bytes. Con esa infroamcion rellenaria el record, donde numero seria la posicion que ocupa ese trozo dentro del archivo (0,1,2,3), Longitud el numero de bytes del array que pertenecen al archivo (nomalmente valdra 128, menos en el ultimo paquete que puede ser menor).

Por parte el receptor recibiria los paquetes y los colocaria en su lugar para recomponer el archivo, llevando la cuenta de los paquetes recibidos y comprobando asi que han llegado todos.

Tampoco estaria mal incluir en el record el numero total de paquetes o el nombre del archivo. Pero eso lo puedes dejar para mas adelante.

Lo dicho, piensate lo de TCP y si todavia quieres hacerlo por UDP y no sabes por donde empezar, vuelve a preguntar e intentare poner algo de codigo.
Responder Con Cita
  #3  
Antiguo 26-03-2007
jeyco jeyco is offline
Registrado
 
Registrado: mar 2007
Posts: 8
Poder: 0
jeyco Va por buen camino
Hola, muchas gracias por responder...
En realidad es que tengo que hacer mi proyecto fin de carrera con delphi y la verdad es que no tengo casi ni idea de delphi. Lo que necesito hacer es un programa que envie un archivo de musica por internet a otro ordenador, y otro programa que lo reciba y lo reproduzca en tiempo real. No se muy bien por donde comenzar. Por eso lo de UDP, me dijeron que para reproducir en tiempo real no servia el TCP. ¿Se podria reproducir en tiempo real con TCP? Perdon por mi ignorancia, pero es que estoy empezando con delphi.
Responder Con Cita
  #4  
Antiguo 27-03-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Vaya, empezáramos por ahí. Tu no quieres transmitir un archivo, tu lo que quieres es transmitir audio, lo que se suele llamar streamming. En ese caso la cosa cambia, y como ya te habían dicho, el udp puede ser una buena opción.

Te preguntaras porque ahora el udp es bueno, pues por la misma razón que antes era malo . TCP controla la transmisión, controla que los paquetes lleguen ordenados, y sobre todo, que lleguen todos, volviendo a enviar los paquetes que se pierden por el camino. Esto es perfecto si queremos transmitir un archivo y queremos estar seguros de que llega completo al otro lado, pero introduce retardos en la transmisión. Sin embargo cuando transmitimos audio no nos importa que lleguen todos los paquetes, que se pierdan un par de paquetes entre un par de cientos, no afectara demasiado a la calidad del sonido. Tampoco nos importa tanto que no lleguen ordenados, si un par de paquetes llegan tarde se desechan y punto.

Mi consejo, ya que estas haciendo un proyecto importante, es que intentes implementar alguno de los protocolos que ya existen para transmitir audio. Primero intenta desarrollar el cliente y pruebalo con cualquier reproductor que soporte streamming. Luego, una vez probado el servidor, comienza a desarrollar tu propio cliente.

Si te decides a hacerlo tu mismo yo empezaría por un diseño sencillo, partiría la información en paquetes pequeños y los transmitiría de una manera similar a como describí arriba con los ficheros. Pero ahora utilizaremos un parámetro diferente, una marca de tiempo. Cuando el cliente reciba los paquetes, los mandara a reproducir en el momento que indica su marca de tiempo, si un paquete llega con una marca de tiempo anterior al punto donde se encuentra la reproducción simplemente lo desechamos, si llegado a un punto todavía no ha llegado el paquete que va en ese lugar pues no reproducimos nada y continuamos con el siguiente cuando le llegue su turno.

Como ves, aun intentando simplificarlo, no es un algo sencillo por eso te aconsejo que para comenzar con buen pie intentes imitar alguno de los protocolos que ya se usan y que se supone que dan buen resultado.
Responder Con Cita
  #5  
Antiguo 27-03-2007
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
Como te dice seoane, debes escribir un protocolo de transmicion basado en udp. Pero por supuesto ya esta escrito y seguro que puedes encontrar varios ejemplos por ahi, una busqueda rapida me dio con estos componentes para delphi.

Pero seguro que puedes encontrar mas buscando por las palabras claves "stream audio" o "streaming audio"
__________________
[Crandel]
Responder Con Cita
  #6  
Antiguo 27-03-2007
jeyco jeyco is offline
Registrado
 
Registrado: mar 2007
Posts: 8
Poder: 0
jeyco Va por buen camino
Muchas gracias por las indicaciones, empezare por ahi a ver lo que puedo hacer...
Un saludo...
Responder Con Cita
  #7  
Antiguo 28-03-2007
jeyco jeyco is offline
Registrado
 
Registrado: mar 2007
Posts: 8
Poder: 0
jeyco Va por buen camino
Bueno ya he conseguido enviar los paquetes UDP y que lleguen a su destino. Mi problema ahora es como reproducirlo mientras van llegando. No se como hacerlo...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Enviar un email con un archivo adjunto Turboleta Internet 9 31-07-2006 19:55:16
enviar archivo por e-mail karocs Internet 2 16-06-2006 03:17:01
Enviar Archivo XML a Paradox con Delphi 6 Anabel Tablas planas 2 01-06-2006 18:45:44
enviar registros a un archivo de excel srangel Internet 0 04-11-2004 05:50:32
Enviar imagen o archivo por socket DarkByte Internet 5 11-09-2003 15:16:16


La franja horaria es GMT +2. Ahora son las 03:46:24.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi