2010-12-30 11 views
9

Estoy trabajando en una aplicación de escritorio usando Java. En mi aplicación, tengo que realizar una prueba de velocidad que mostrará la velocidad de carga y descarga de archivos.Probando la velocidad de carga y descarga de archivos usando FTP

Para cargar la prueba, estoy cargando un pequeño archivo de prueba a un servidor FTP y, de acuerdo con el tiempo, estoy calculando la velocidad de carga del archivo. de manera similar, estoy descargando un servidor de formularios de archivos de prueba y calculando la velocidad de descarga.

Pero el resultado que obtengo no concuerda con la velocidad actual de carga y descarga de archivos FTP. Parece que la conexión establecida al servidor FTP está aumentando el tiempo, por lo tanto, la velocidad resultante que estoy calculando es menor.

aquí es el código de carga de archivos que estoy utilizando:

 public int getTransferRate(File filename) 
    {   
     int trRate = 0; 

     try { 

     OutputStream fout = null; 
     InputStream bin = null; 

     connect(ftpUser,ftpPass,ftpServer); 


     ftp.setFileType(FTPSClient.BINARY_FILE_TYPE); 
     ftp.enterLocalPassiveMode(); 
     fout = ftp.storeFileStream("testuploadfile"); 

     bin = new FileInputStream(filename); 
     byte[] b = new byte[8192]; 
     int bytesRead = 0; 

     long startTime = System.currentTimeMillis(); 
     long endTime = 0; 
     while ((bytesRead = bin.read(b)) != -1) { 
      fout.write(b, 0, bytesRead); 
      bytesUploadedSet += bytesRead; 
     } 
     endTime = System.currentTimeMillis(); 
     trRate = (int) ((float) bytesUploadedSet/(endTime - startTime)); 

    } catch (IOException ex) { 
     Logger.getLogger(FTPFileStorageService.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    return trRate; 
} 

Podría sugerir cualquier enlace o alguna manera de conseguir la carga y descarga de velocidad más cercano.

gracias a todas sus valiosas sugerencias.

+0

Se puede publicar un (mínimo) código de ejemplo para demostrar cómo se está iniciando la transferencia y el cálculo de la velocidad? – SimonJ

Respuesta

1

En primer lugar, es probable que Filezilla utilice un código nativo que será más rápido que el que está utilizando.

Para realizar pruebas, establezca una conexión e intente cargar muchos archivos, unos 20 aproximadamente ... eso debería dar una buena idea del resultado ... normalmente, también registre su salida en un archivo de prueba separado por comas o algo que usted puede importar más tarde en excel y analizar. Puede usar algo como JMeter si desea realizar algunas pruebas de rendimiento de núcleo duro.

En cualquier tipo de prueba de rendimiento que tenga un tamaño de muestra grande (muchos resultados de muestras) ofrece resultados más precisos.

http://jmeter.apache.org/

1

¿No puede iniciar el temporizador después de establecer la conexión?

Si no es así, para una solución parcial rápida, aumente el tamaño del archivo de prueba, cuanto más grande sea, menos significativa será la sobrecarga de conexión.

Si usted necesita para ser más exactos, entonces voy a aplazar a alguien con más experiencia ... hava

+0

Gracias por responder estoy intentando un archivo de 2MB para cargar la prueba y arrancar el temporizador después de establecer la conexión, pero cuando uso Filezilla para la transferencia de archivos muestra 100 kbps aproximadamente, pero en la prueba obtengo un máximo de 65 kbps. ¿Qué otra cosa puede ser una razón para no obtener resultados precisos? – Toman

0

Se puede utilizar un protocolo simple como HTTP?

La configuración de una transferencia de FTP puede ser complicada: se deben establecer conexiones de control y de datos separadas, y ambos puntos finales deben ponerse de acuerdo sobre si usar el modo activo o pasivo para evitar firewalls y NAT. Este proceso puede implicar simplemente probar una de las opciones (por ejemplo, activa) y esperar el éxito o un tiempo de espera, que podría ser lo que está distorsionando sus mediciones.

+0

Gracias por responder. Como mi aplicación usa FTP para la transferencia de archivos, es necesario calcular la velocidad del FTP. Y para usar HTTP, requiere algunos permisos de admin para permitir http si el firewall está habilitado. – Toman

Cuestiones relacionadas