Acerca de la transferencia de archivos usando JAVA SOCKET
Transferencia de archivos punto a punto
/*
importar java.io.*;
importar java.net.* ;
importar java.util.*;
*/
conexión HttpURLConnection privada; //Conexión de almacenamiento
private int downsize = -1;/ /Tamaño del archivo de descarga, el valor inicial es -1
private int downed = 0; //Tamaño descargado de Wenjia, el valor inicial es 0
archivo guardado privado RandomAccessFile; registrar descarga Archivo de almacenamiento de información
URL privada fileurl //Registra la dirección del archivo a descargar
private DataInputStream fileStream //Registra el flujo de datos descargados
try{
/*Comience a crear el archivo de almacenamiento descargado e inicialice el valor*/
Archivo tempfileobject = new File("h:\\webwork-2.1.7.zip ");
p>
if(!tempfileobject.exists()){
/*Crea el archivo si no existe*/
tempfileobject.createNewFile();
}
savefile = new RandomAccessFile(tempfileobject, "rw");
/*Establecer conexión*/
fileurl = nueva URL("/files/documents/693/9723/webwork-2.1.7.zip");
conexión = (HttpURLConnection)fileurl.openConnection(); >
conexión.setRequestProperty("Range"," byte=" this.downed "-");
this.downsize = conexión.getContentLength()
// System.out.println(connection.getContentLength());
new Thread(this).start()
}
catch(Exception e) {
System.out.println (e.toString());
System.out.println("Error del generador"); (0);
}
public void run(){
/*Comienza a descargar el archivo a
La próxima prueba de descarga reanudable sin punto de interrupción, hay un problema con el archivo descargado*/
try{
System.out.println("begin!"
);Fecha de inicio = nueva Fecha();
comenzartime.setTime(nueva Fecha().getTime();
byte[] filebyte; > int onecelen ;
//System.out.println(this.connection.getInputStream().getClass().getName();
this.fileStream = new DataInputStream(
new BufferedInputStream(
this.connection.getInputStream()));
System.out.println("size = " this.downsize); /p>
while(this.downsize != this.downed){
if(this.downsize - this.downsize gt; 262144){//Establecer un caché máximo de 256 KB p>
filebyte = nuevo byte[262144];
onecelen = 262144;
}
else{
filebyte = nuevo byte[this .downsize - this.downed];
onecelen = this.downsize - this.downed
}
onecelen = this.fileStream. read(filebyte, 0, onecelen);
this.savefile.write(filebyte, 0, onecelen
this.downed = onecelen; .out.println (this.downed);
}
this.savefile.close();
System.out.println("end!"
p>
System.out.println(begintime.getTime()
System.out.println(nueva Fecha().getTime());
Sistema.out.println(begintime.getTime() - nueva fecha().
getTime());
}
catch(Exception e){
System.out.println(e.toString());
System.out.println("¡Hay un problema con el método run()!"
}
}
/**); *
//FileClient.java
importar java.io.*;
importar java.net.*;
clase pública FileClient { p>
public static void main(String[] args) lanza una excepción {
//Utiliza el sistema de archivos local para aceptar datos de la red y guardarlos como un archivo nuevo
Archivo archivo = nuevo Archivo ("d:\\fmd.doc");
archivo.createNewFile();
RandomAccessFile raf = nuevo RandomAccessFile(archivo, " rw");
//Conéctese al servidor de archivos a través de Socket
Socket server = new Socket(InetAddress.getLocalHost(), 3318);
/ /Crear un flujo de aceptación de red para aceptar datos de archivos del servidor
p>InputStream netIn = server.getInputStream();
InputStream in = new DataInputStream(new BufferedInputStream(netIn));
//Crear un búfer para almacenar datos de red
byte[] buf = new byte[2048];
int num = in.read(buf);
while (num != (-1) ) {//Si se han leído todos los datos
raf.write(buf, 0, num); al archivo
raf.skipBytes(num); // Escribe los bytes del archivo secuencialmente
num = in.read(buf); //Continúa leyendo archivos de la red
>}
in.close() ;
raf.close();
}
}
//FileServer.java
importar java.io.*;
importar java.util.*
importar java.net.*; ;
servidor de archivos de clase pública {
public static void main(String[] args) lanza una excepción {
//Crea una secuencia de archivos para leer datos en el archivo
Archivo archivo = new File("d: \\System Features.doc");
FileInputStream fos = new FileInputStream(archivo);
/ /Crear un servidor de red para aceptar solicitudes de clientes
Servir
rSocket ss = new ServerSocket(8801);
Socket client = ss.accept();
//Crear un flujo de salida de red y proporcionar un contenedor de datos
OutputStream netOut = client.getOutputStream();
OutputStream doc = new DataOutputStream(
new BufferedOutputStream(netOut));
//Crear búfer de lectura de archivos Área
byte[] buf = nuevo byte[2048];
int num = fos.read(buf);
mientras (num != (- 1)) {// Si el archivo ha sido leído
doc.write(buf, 0, num); //Escribe los datos del archivo desde el búfer de red
doc. flush() ;//Actualiza el búfer y escribe los datos en el cliente
num = fos.read(buf); //Continúa leyendo datos del archivo
} p>
fos.close();
doc.close();
}
}
*/