Ver Mensaje Individual
  #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
Reputación: 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