⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hilotxfileservidor.java

📁 Example FTP server client/server
💻 JAVA
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package controlador;import java.io.*;import java.net.Socket;import java.util.logging.Level;import java.util.logging.Logger;/** * * @author Camilo Andres */public class hiloTxFileServidor extends Thread{    private Socket conTxFile;    private String rutaArchivo;    private ObjectOutputStream salidaDatos;    private ObjectInputStream entradaDatos;    public hiloTxFileServidor(Socket conTxFile, String rutaArchivo) throws IOException    {        this.conTxFile = conTxFile;        this.rutaArchivo = rutaArchivo;        salidaDatos=new ObjectOutputStream(conTxFile.getOutputStream());        entradaDatos=new ObjectInputStream(conTxFile.getInputStream());        start();    }    public void run()    {        try {                        System.out.println("esperando para transmitir.");            entradaDatos.readObject();             System.out.println("listo para transmitir");            //archivo que se va a descargar.            File f = new File("files\\" + rutaArchivo);            //flujo de entrada de los datos del archivo, se usa para leer el archivo.            FileInputStream fin = new FileInputStream(f);            long sizeFile = f.length();            //se va a enviar el archivo en bloques de 100 bytes.            //se calcula cuantos bloque hay,            int numBloques = (int) (sizeFile/hiloCliente.TAM_BLOQUE);            //los byte que sobren que no alcancen a formar un bloque.            int tamResto = (int) (sizeFile%hiloCliente.TAM_BLOQUE);            //para cumplir el protocolo, el servidor le envia al            //lee el arreglo de TAM_BLOQUE los bytes del arreglo            //el tamaño del archivo y el tamaño del bloque            //que va a enviar para que sepa como reconstruir el archivo.            //enviarMensajeCliente("RECIBIR_ARCHIVO");            enviarMensajeCliente(sizeFile); //tamaño del archivo            enviarMensajeCliente(hiloCliente.TAM_BLOQUE); //tamaño del bloques.            System.out.println(numBloques+" a transmitir "+ "con tamaño de "+hiloCliente.TAM_BLOQUE+" y un resto de "+tamResto);            //lee los numBloques bloques del archivo y los envia.            long bytesTx=0;            for (int i = 0; i < numBloques; i++) {                byte[] datos = new byte[hiloCliente.TAM_BLOQUE];                //lee el arreglo de TAM_BLOQUE los bytes del arreglo                fin.read(datos);                //y los envia al cliente que los espera.                enviarMensajeCliente(datos);                bytesTx+=hiloCliente.TAM_BLOQUE;                System.out.println(i+"-"+bytesTx+" de "+ sizeFile);            }            //hay que enviar el sobrante, leyendolo del archivo            byte[] datos = new byte[tamResto];            fin.read(datos);            //y los envia al cliente que los espera.            enviarMensajeCliente(datos);            fin.close();        } catch (ClassNotFoundException ex) {            Logger.getLogger(hiloTxFileServidor.class.getName()).log(Level.SEVERE, null, ex);        } catch (IOException ex)        {            Logger.getLogger(hiloTxFileServidor.class.getName()).log(Level.SEVERE, null, ex);        }        finally        {            try {                conTxFile.close();            } catch (IOException ex) {                Logger.getLogger(hiloTxFileServidor.class.getName()).log(Level.SEVERE, null, ex);            }        }    }     /**     * metodo para enviar un mensaje al clietne remoto     * @param msj que se va a enviar. de tipo Object para     * poder enviar cualquier cosa.     */    public void enviarMensajeCliente(Object msj) throws IOException    {        salidaDatos.writeObject(msj);        salidaDatos.flush();        salidaDatos.reset();    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -