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