Pues si no entiendes mi respuesta será -como ya te he dicho- porque yo no acabo de entender tu pregunta; mucho más cuando ahora me comentas que recibes en el evento DataArrival y controlas los bytes recibidos.
No sé si es que desconoces que el control ProgressBar siempre funciona por valor porcentual (entre 0.0001 y 100.00), pero si conoces el número total de bytes que debería recibir -si todo funciona de la forma esperada- y conoces la cantidad recibida, sólo te queda aplicar la fórmula que te indico en el primer post, que calcula el valor en porcentaje de lo recibido en función de lo esperado.
En realidad -no sé si esto te puede aclarar algo- el protocolo TCP no te permite controlar el volumen de información enviado, pero si el número de datos que ha conseguido enviar (En el server y mediante el objeto WinSock). Desconozco si el propio Winsock establecerá los controles necesarios para gestionar cualquier volumen de datos; en tu caso trataría de estblecer una gestion tipo Chunk para enviar el fichero en diferentes paquetes, controlando cuando el cliente ha recibido , procesado y solicita el envío de mas información, dicho de otra manera..el cliente-servidor tienes que establecer un protocolo de transmisión para asegurar que los datos llegan de forma correcta. Envíame...teEnvío...esperaqueestoyprocesando....en víamedenuevo....yateheenviadotodo....cerramoslacon exión...valelacierro...etcétera.
Permiteme que te manifieste una opinión personalaún a riesgo de parecerte descortés (nada más lejos de mi intención). Si lo que pretendes es copiar fichero de un equipo a otro dentro de un mismo entrono de red local...simplemente cópialo con las propias herramientas del sistema operativo; si lo que necesitas es descargar ficheros desde un equipo remoto, instala un servidor FTP y ejecuta las acciones mediante un control INET o el propio Winsock respetando las reglas del protocolo FTP, que para eso está ya inventado.
No sé si ahora me explico con mayor claridad. Si no es así trataré de afinar la próxima respuesta, pero mis respuestas dan por entendido que tienes un buen control de comunicaciones remotas y asíncronas, de lo contrario házmelo saber porque sino podemos estar 'mareando la perdíz'. |