Autor
|
Tema: Cliente-servidor (Leído 12,838 veces)
|
-Ramc-
Desconectado
Mensajes: 495
|
Me parece que alguien debe leerse un buen tutorial de Sockets, en el paquete .net está todo lo que necesitas, toma el InputStream del socket, empieza a leer los datos que te envia el server y ya lo tienes.
|
|
|
En línea
|
Shhh... be vewy, vewy, quiet! I'm hunting wabbits...LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.
|
|
|
Leyer
Desconectado
Mensajes: 786
leyer@elhacker.net
|
Me parece que alguien debe leerse un buen tutorial de Sockets, en el paquete .net está todo lo que necesitas, toma el InputStream del socket, empieza a leer los datos que te envia el server y ya lo tienes.
pero si el lo esta haciendo asi ps que lo siga haciendo no es mucha la diferencia
|
|
|
En línea
|
|
|
|
-Ramc-
Desconectado
Mensajes: 495
|
Me parece que alguien debe leerse un buen tutorial de Sockets, en el paquete .net está todo lo que necesitas, toma el InputStream del socket, empieza a leer los datos que te envia el server y ya lo tienes.
pero si el lo esta haciendo asi ps que lo siga haciendo no es mucha la diferencia Ahh, lo está haciendo todo con esa api? pensé que usaba la .net por el primer comentario y ahora iba a usar esta y terminaría un revuelto de código, pero, si está con una sóla api, que siga. xD
|
|
|
En línea
|
Shhh... be vewy, vewy, quiet! I'm hunting wabbits...LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.
|
|
|
alzehimer_cerebral
|
Simplemente estoy buscando formas de hacerlo y la verdad que la segunda me parece mas comoda de momento. Con lo que he visto parece ser que con net API habria que tambien programar un proceso que corra en el servidor Apache y que se sincronizase con el proceso cliente, mientras que con los metodos http esto no hace falta.
LEYER ya me he bajado la libreria donde la descomprimo para poder utilizarla?
Salu2
alzehimer_cerebral
|
|
|
En línea
|
|
|
|
-Ramc-
Desconectado
Mensajes: 495
|
Debe tener uno o más .jar o class, tienes dos opciones, metes la ruta donde lo tienes en el classpath o compilas directamente indicandole el classpath. javac -classpath "$CLASSPATH:.:/usr/lib/jdk1.6.0_10/jre/lib/ext/libreria.jar" Prueba.java
|
|
|
En línea
|
Shhh... be vewy, vewy, quiet! I'm hunting wabbits...LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.
|
|
|
Leyer
Desconectado
Mensajes: 786
leyer@elhacker.net
|
bien! esta es la segunda forma import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; /** * @author Leyer */ public class ThreadForDownload extends Thread{ public static void main (String []args ){ try { new ThreadForDownload (new URL("http://www.tecnun.es/asignaturas/Informat1/ayudainf/aprendainf/Java/Java2.pdf"), "/home/leyer"). start(); // TODO Auto-generated catch block e.printStackTrace(); } } private int offset = 0; private boolean init = true; public ThreadForDownload( this. url = URL;this. path = path ; } @Override public synchronized void run() { while(init){ try { System. out. println("-----------------------------------"); System. out. println("Host: "+url. getHost()); System. out. println("NOmbre del Archivo: "+getFileName (url )); System. out. println("Tamaño: "+getLength (url )); System. out. println("-----------------------------------"); connection = url.openConnection(); e.printStackTrace();System.exit(0); } int read = 0; final int SIZE = getLength(url); try { System. out. println("wait..."); stream = connection.getInputStream(); final byte[] data = new byte[SIZE]; while((read = stream.read(data)) > 0){ offset +=read; fileOutputStream.write(data, 0, read); } try{ System. out. println("Completado!"); fileOutputStream.flush(); fileOutputStream.close(); offset = 0; init = false; break; } } } public void setInit(boolean init) { this.init =false; } final int getLength (URL urlFile ){ int size = 0; try { connection = urlFile.openConnection(); size = connection.getContentLength(); System. err. println(e +":ERROR");System. exit(0); System. err. println(e +":ERROR");System. exit(0); } return size; } int lastIndexOf=path.lastIndexOf("/"); String name = path. substring(lastIndexOf +1); return name; } }
PD: lo hice al instante asi que errores en el codigo se aceptan
|
|
« Última modificación: 6 Enero 2010, 19:35 pm por LEYER »
|
En línea
|
|
|
|
Debci
Wiki
Desconectado
Mensajes: 2.021
Actualizate o muere!
|
Ese codigo lo buscaba xD, mira un cosa que quiero hacer (Servira de ayuda para el post): Quiero hacer una relacion del progreso, ver cuantos bytes quedan por descargar, y he querido hacerlo asi: int contador = getLength(url); while((read = stream.read(data)) > 0){ contador--; offset +=read; contador--; fileOutputStream.write(data,0,read); }
Pero no me da la salida que deberia, no se porque motivo,en teoria es asi disminuyo en 1 cada loop que pasa, o cuanto escribe por loop, creo que es eso el problema. Saludos
|
|
|
En línea
|
|
|
|
Debci
Wiki
Desconectado
Mensajes: 2.021
Actualizate o muere!
|
Rectifico, ya lo he consegui, aqui el metodo: int porcentaje = 0; System. out. println(porcentaje ); while((read = stream.read(data)) > 0){ offset += read; porcentaje = (offset * 100)/SIZE; System. out. println(porcentaje ); fileOutputStream.write(data,0,read); }
Saludos
|
|
|
En línea
|
|
|
|
alzehimer_cerebral
|
LEYER gracias por tu aporte uan vez mas, el ejemplo que me pones me gusta mas ya que lleva threads incorporados. El codigo esta muy claro tambien.
Cualquier cosa os comento.
Salu2.
alzehimer_cerebral
|
|
|
En línea
|
|
|
|
Leyer
Desconectado
Mensajes: 786
leyer@elhacker.net
|
Rectifico, ya lo he consegui, aqui el metodo: int porcentaje = 0; System. out. println(porcentaje ); while((read = stream.read(data)) > 0){ offset += read; porcentaje = (offset * 100)/SIZE; System. out. println(porcentaje ); fileOutputStream.write(data,0,read); }
cierto esta listo para un progressBar aunke fuera bueno que en la salida se imprimiera en una sola linea y no salte a la siguiente desconozco eso. LEYER gracias por tu aporte uan vez mas, el ejemplo que me pones me gusta mas ya que lleva threads incorporados. El codigo esta muy claro tambien. Cualquier cosa os comento. Salu2. alzehimer_cerebral
|
|
|
En línea
|
|
|
|
|
|