Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Colaboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #5  
Antiguo 27-09-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 22
cHackAll Va por buen camino
Bueno, independientemente de la eficacia del componente a utilizar (que al fin y a cabo solo "obedecerá" a la "configuración" del programador), hago énfasis en que el código que utiliza "n00b" que envía caracter por caracter el archivo .

Eso es una practica muy mala, y como yo lo veo es aún mucho peor considerando su algoritmo de recepción de datos, intento explicar el problema;

Button1Click abre el archivo y byte por byte envía su contenido al componente ClientSocket1 el cual envía al socket dicho byte, por su parte el SO utilizando el Nagle algorithm va almacenando estos bytes hasta que el tamaño de envío sea el adecuado, cuando esto ocurre el paquete es enviado (Hablamos de un paquete no del archivo entero).

En el otro extremo de la conexión ServerSocket1ClientRead recive los datos enviados (no es un caracter ni todo el archivo sino un paquete de dimensión X), y crea/sobrescribe el 'archivo.txt' guardando el paquete. Considérese que cada vez que recibe un dato el archivo es pisado!


Para corregir dicho código se puede utilizar un valor X de dimensión mayor a un byte para saber que el archivo debe ser creado, luego enviar los datos sin utilizar el Nagle algorithm (esto configurando el valor TCP_NODELAY del socket), en el otro extremo al recibir un valor mayor a un byte crear el archivo, caso contrario realizar un Append.


Este método es muy lento he ineficaz, lo correcto sería enviar el tamaño del archivo primero, luego el contenido del archivo en bloques de tamaño razonable (~4 Kb).

Saludos
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Responder Con Cita
 



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
Actualizar form mientras se reciben datos por sockets JMGR Internet 3 23-12-2011 21:47:27
Gracias a todos los que me envian cadenas... Albano Humor 4 21-12-2006 23:56:28
¿Como se envian codigos de control a una impresora? flystar Impresión 5 05-08-2006 01:10:07
Te envían gratis discos de Linux a casa Casimiro Noteví Noticias 5 17-07-2006 09:05:24
Leer los paquetes que se envian por el puerto COM rjsitruiz Providers 1 11-10-2004 23:36:53


La franja horaria es GMT +2. Ahora son las 12:27:58.


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